原因码与 ACK--MQTT 5.0 新特性
MQTT v3.1.1
MQTT v3.1.1 协议只有 10 种返回码,这些返回码所能表示的含义很少,且相同的返回码的值在不同的报文中可以有不同的含义,容易被混淆。
CONNACK 报文
在 CONNECT 报文中只有 6 种返回码,只有当服务器发回的 CONNACK 报文的返回码为 0 时才表示连接建立成功。
SUBACK 报文
SUBACK 报文有四种返回码,除了返回码 0x80 表示失败,其他返回码都表示订阅成功,3 个值 0,1,2 分别代表订阅接收到的消息的最大 QoS 值。
MQTT v5.0
MQTT v5.0 协议将返回码改名成了原因码,增加了用于表示更多类型的错误的原因码。
下表是原因码列表,分别表示的是原因码的值以及包含原因码的控制报文:
原因码是用来表明操作结果的一个单字节无符号值,小于 0x80 的原因码表明操作的结果是成功的,正常情况下,操作成功返回的原因码值为 0。如果返回的原因码大于等于 0x80,就说明操作失败了。
CONNACK,PUBACK,PUBREC,PUBREL,PUBCOMP,DISCONNECT 和 AUTH 控制报文的原因码存在可变报头中。而 SUBACK 和 UNSUBACK 报文在有效载荷中包含了一张原因码的列表。
评论