Skip to content

客户端 API

本页 API 文档提供了与管理 MQTT 客户端相关的各种操作信息,包括查看客户端信息、为客户端订阅和取消订阅主题,以及断开客户端连接。

查看所有客户端

URI

GET /clients

返回集群下所有客户端的信息,支持分页。

查询参数:

参数类型描述
_pageInteger页码
_limitInteger每页显示的数据条数
clientidString客户端标识符
usernameString客户端用户名
zoneString客户端配置组名称
ip_addressString客户端 IP 地址
conn_stateEnum客户端当前连接状态, 可取值有:connected,idle,disconnected
clean_startBool客户端是否使用了全新的会话
proto_nameEnum客户端协议名称, 可取值有:MQTT,CoAP,MQTT-SN
proto_verInteger客户端协议版本
_gte_created_atInteger客户端会话创建时间,小于等于查找
_lte_created_atInteger客户端会话创建时间,大于等于查找
_gte_connected_atInteger客户端连接创建时间,小于等于查找
_lte_connected_atInteger客户端连接创建时间,大于等于查找

请求消息

响应消息

名称类型描述
dataArray of Objects所有客户端的信息
data[].nodeString客户端所连接的节点名称
data[].clientidString客户端标识符
data[].usernameString客户端连接时使用的用户名
data[].proto_nameString客户端协议名称
data[].proto_verInteger客户端使用的协议版本
data[].ip_addressString客户端的 IP 地址
data[].portInteger客户端的端口
data[].is_bridgeBoolean指示客户端是否通过桥接方式连接
data[].connected_atString客户端连接时间,格式为 "YYYY-MM-DD HH:mm:ss"
data[].disconnected_atString客户端离线时间,格式为 "YYYY-MM-DD HH:mm:ss", 此字段仅在 connectedfalse 时有效并被返回
data[].connectedBoolean客户端是否处于连接状态
data[].zoneString指示客户端使用的配置组
data[].keepaliveInteger保持连接时间,单位:秒
data[].clean_startBoolean指示客户端是否使用了全新的会话
data[].expiry_intervalInteger会话过期间隔,单位:秒
data[].created_atString会话创建时间,格式为 "YYYY-MM-DD HH:mm:ss"
data[].subscriptions_cntInteger此客户端已建立的订阅数量
data[].max_subscriptionsInteger此客户端允许建立的最大订阅数量
data[].inflightInteger飞行队列当前长度
data[].max_inflightInteger飞行队列最大长度
data[].mqueue_lenInteger消息队列当前长度
data[].max_mqueueInteger消息队列最大长度
data[].mqueue_droppedInteger消息队列因超出长度而丢弃的消息数量
data[].awaiting_relInteger未确认的 PUBREC 报文数量
data[].max_awaiting_relInteger允许存在未确认的 PUBREC 报文的最大数量
data[].recv_octIntegerEMQX Broker(下同)接收的字节数量
data[].recv_cntInteger接收的 TCP 报文数量
data[].recv_pktInteger接收的 MQTT 报文数量
data[].recv_msgInteger接收的 PUBLISH 报文数量
data[].send_octInteger发送的字节数量
data[].send_cntInteger发送的 TCP 报文数量
data[].send_pktInteger发送的 MQTT 报文数量
data[].send_msgInteger发送的 PUBLISH 报文数量
data[].mailbox_lenInteger进程邮箱大小
data[].heap_sizeInteger进程堆栈大小,单位:字节
data[].reductionsIntegerErlang reduction
metaObject分页信息
meta.pageInteger页码
meta.limitInteger每页显示的数据条数
meta.countInteger数据总条数

请求示例

bash
curl -u app_id:app_secret -X GET {api}/clients?_page=1&_limit=50

响应示例

JSON
{
  "meta": {
    "page": 1,
    "limit": 50,
    "hasnext": false,
    "count": 1
  },
  "data": [
    {
        "peersni": "qe92461d.dev-ala.cn-hangzhou.mqttce.com",
        "reductions": 10276,
        "expiry_interval": 0,
        "clean_start": true,
        "send_msg.dropped.expired": 0,
        "recv_msg.qos0": 3,
        "mqueue_dropped": 0,
        "recv_cnt": 9,
        "send_cnt": 3,
        "keepalive": 60,
        "recv_oct": 257,
        "heap_size": 987,
        "recv_pkt": 6,
        "recv_msg.dropped.await_pubrel_timeout": 0,
        "proto_ver": 5,
        "inflight_max": 32,
        "send_msg.dropped": 0,
        "created_at": "2023-09-15T09:36:20.871+00:00",
        "awaiting_rel_max": 100,
        "inflight_cnt": 0,
        "ip_address": "115.236.21.86",
        "mqueue_len": 0,
        "send_msg.qos2": 0,
        "send_pkt": 3,
        "subscriptions_cnt": 0,
        "send_msg.dropped.too_large": 0,
        "recv_msg": 3,
        "send_msg.dropped.queue_full": 0,
        "send_msg": 0,
        "node": "emqxsl-dev@10.66.128.31",
        "awaiting_rel_cnt": 0,
        "listener": "tcp:default",
        "connected": true,
        "username": "aip_user2",
        "recv_msg.qos1": 0,
        "proto_name": "MQTT",
        "port": 13312,
        "send_msg.qos1": 0,
        "is_persistent": false,
        "enable_authn": true,
        "mailbox_len": 0,
        "subscriptions_max": 10,
        "recv_msg.qos2": 0,
        "connected_at": "2023-09-15T09:36:20.871+00:00",
        "tenant_id_from": "peersni",
        "is_bridge": false,
        "clientid": "mqttx_07cb8109",
        "send_oct": 25,
        "send_msg.qos0": 0,
        "mqueue_max": 1000,
        "cn": null,
        "recv_msg.dropped": 0,
        "dn": null
    }
  ]
}

查看指定客户端的信息

URI

GET /clients/{clientid}

返回指定客户端的信息

参数:

参数类型描述
clientidStringclientid

请求信息

响应信息

名称类型描述
dataArray of Objects客户端的信息,详细请参见 GET /clients

请求示例

查询指定客户端

bash
curl -u app_id:app_ssecret -X GET {api}/clients/client_1

响应示例

JSON
// HTTP status response code
200
// HTTP response body
{
    "peersni": "qe92461d.dev-ala.cn-hangzhou.mqttce.com",
    "reductions": 21041,
    "expiry_interval": 0,
    "clean_start": true,
    "send_msg.dropped.expired": 0,
    "recv_msg.qos0": 5,
    "mqueue_dropped": 0,
    "recv_cnt": 18,
    "send_cnt": 10,
    "keepalive": 60,
    "recv_oct": 361,
    "heap_size": 987,
    "recv_pkt": 15,
    "recv_msg.dropped.await_pubrel_timeout": 0,
    "proto_ver": 5,
    "inflight_max": 32,
    "send_msg.dropped": 0,
    "created_at": "2023-09-15T09:36:20.871+00:00",
    "awaiting_rel_max": 100,
    "inflight_cnt": 0,
    "ip_address": "115.236.21.86",
    "mqueue_len": 0,
    "send_msg.qos2": 0,
    "send_pkt": 10,
    "subscriptions_cnt": 0,
    "send_msg.dropped.too_large": 0,
    "recv_msg": 5,
    "send_msg.dropped.queue_full": 0,
    "send_msg": 0,
    "node": "emqxsl-dev@10.66.128.31",
    "awaiting_rel_cnt": 0,
    "listener": "tcp:default",
    "connected": true,
    "username": "aip_user2",
    "recv_msg.qos1": 0,
    "proto_name": "MQTT",
    "port": 13312,
    "send_msg.qos1": 0,
    "is_persistent": false,
    "enable_authn": true,
    "mailbox_len": 0,
    "subscriptions_max": 10,
    "recv_msg.qos2": 0,
    "connected_at": "2023-09-15T09:36:20.871+00:00",
    "tenant_id_from": "peersni",
    "is_bridge": false,
    "clientid": "mqttx_07cb8109",
    "send_oct": 39,
    "send_msg.qos0": 0,
    "mqueue_max": 1000,
    "cn": null,
    "recv_msg.dropped": 0,
    "dn": null
}

踢除客户端

URI

DELETE /clients/{clientid}

踢除指定客户端。注意踢除客户端操作会将连接与会话一并终结。

请求信息

响应消息

状态码

请求示例

bash
curl -u app_id:app_secret -X DELETE {api}/clients/client_1

响应示例

HTTP
// HTTP status response code
204

指定客户端订阅主题

URI

POST /clients/{client_id}/subscribe

请求消息

名称类型描述
topicString需要订阅的主题
qosIntegerQoS
nlIntegerNo Local
rapIntegerRetain as Published
rhIntegerRetain Handling

响应消息

名称类型描述
clientidStringClientid
topicString订阅的主题
qosIntegerQoS
nodeString节点信息
nlIntegerNo Local
rapIntegerRetain as Published
rhIntegerRetain Handling

请求示例

bash
curl -u app_id:app_secret -X POST -H 'Content-Type: application/json' -d '{"topic": "t/a","qos": 1}' {api}/clients/client_1/subscribe

响应示例

JSON
// HTTP status response code
200
// HTTP response body
{
  "clientid": "client_1",
  "topic": "t/a",
  "qos": 1,
  "nl": 0,
  "node": "emqxsl-dev@10.66.128.31",
  "qos": 0,
  "rap": 0,
  "rh": 0,
}

指定客户端取消订阅主题

URI

POST /clients/{client_id}/unsubscribe

请求消息

名称类型描述
topicString需要取消订阅的主题

响应消息

状态码

请求示例

bash
curl -u app_id:app_secret -X POST -H 'Content-Type: application/json' -d '{"topic": "t/a"}' {api}/clients/client_1/unsubscribe'

响应示例

HTTP
// HTTP status response code
204

指定客户端批量订阅主题

URI

POST /clients/{client_id}/subscribe/bulk

请求消息

名称类型描述
[].topicString需要订阅的主题
[].qosIntegerQoS 等级

响应消息

名称类型描述
dataArray of Objects所有订阅信息
data[].clientidStringclientid
data[].topicString订阅主题

请求示例

bash
curl -u app_id:app_secret -X POST -H 'Content-Type: application/json' -d '[{"topic": "t/a", "qos": 1}, {"topic": "t/b", "qos": 0}]' {api}/clients/client_1/subscribe/bulk

响应示例

JSON
// HTTP status response code
200
// HTTP response body
{
    "data": [
        {
            "topic": "t/a",
            "clientid": "client_1",
            "nl": 0,
            "node": "emqxsl-dev@10.66.128.31",
            "qos": 1,
            "rap": 0,
            "rh": 0,
        },
        {
            "topic": "t/b",
            "clientid": "client_1",
            "nl": 0,
            "node": "emqxsl-dev@10.66.128.31",
            "qos": 0,
            "rap": 0,
            "rh": 0,
        }
    ]
}

指定客户端批量取消订阅主题

URI

POST /clients/{client_id}/unsubscribe/bulk

请求消息

名称类型描述
[].topicString需要取消订阅的主题

响应消息

状态码

请求示例

bash
curl -u app_id:app_secret -X POST -H 'Content-Type: application/json' -d '[{"topic": "t/a"},{"topic": "t/b"}]' {api}/clients/client_1/unsubscribe/bulk

响应示例

HTTP
// HTTP status response code
204