Johnson 发表于 2015-5-31 23:44:31

关于对MQTT的CONNACK消息中对返回码的解释

开发者自已使用MQTT协议开发WiFi模块连接机智云时,会遇到CONNACK返回失败的情况,那应该如何解读CONNACK消息中的返回码呢?

MQTT的CONNACK消息中对返回码(return code)作了如下的定义:

0x00 Connection Accepted
0x01 Connection Refused: unacceptable protocol version
0x02 Connection Refused: identifier rejected
0x03 Connection Refused: server unavailable
0x04 Connection Refused: bad user name or password
0x05 Connection Refused: not authorized
6-255 Reserved for future use

现对这一定义作一个具体的解释:
0x00 Connection Accepted成功

0x01 Connection Refused: unacceptable protocol version
MQTT协议版本号不对,目前支持MQTT 3.1。一般不会有这个问题,除非使用了不对应版本的MQTT Client库。
0x02 Connection Refused: identifier rejected
1. Client Identifier长度不对,允许的长度范围应是 1~23B2. Client Identifier已被使用。一般这种情况只会出现在手机连接的情况。如是设备使用已在线的
Client Identifier连接,会踢前一个session下线而不会报这个错误(设备是使用DID作为Client Ifentifier的值)。
0x03 Connection Refused: server unavailable

服务不可用,机智云M2M服务器不会向客户端报这个错误。

0x04 Connection Refused: bad user name or password
用户名和密码(或DID/Passcode)不正确。对设备来说,也有可能是由于设备已注销了(设备可以通过reset按键主动注销自己)。

0x05 Connection Refused: not authorized
非授权访问,机智云M2M服务器不会向客户端报这个错误。
所以,对客户端来说,应重点关注红色(0x01, 0x02, 0x04)字的错误代码。


页: [1]
查看完整版本: 关于对MQTT的CONNACK消息中对返回码的解释