01
Reason Code
Reason Code 在 MQTT 中的主要作用是为客户端和服务端提供更详细的反馈信息。比如你可以在 CONNACK 报文中0x86对应着Bad User Name or Password,这样客户端就能够知道是因为用户名/密码错误无法正常建立MQTT连接。
在 MQTT 5.0 中,可用的 Reason Code 有 43 个,按规定< 0x80 的 Reason Code 用于表示成功,≥ 0x80 的 Reason Code 则用于表示异常。这样客户端能够更轻松地判断操作是否成功。
MQTT 5.0 中支持 Reason Code 的报文有9种:CONNACK、PUBACK、PUBREC、PUBREL、PUBCOMP、SUBACK、UNSUBACK、DISCONNECT 以及 AUTH。
Reason Code 在 MQTT 3.1.1 和 5.0 中对比
虽然 Reason Code 已经能够指示大部分的错误原因,但对于开发者或运维人员来说,可能仍然缺少更直观的上下文信息。Reason String 是 MQTT 5.0 对 Reason Code 的一个补充,是为开发者而设计的可读的字符串。
在实际使用中,Reason String 的内容取决于客户端和服务端的具体实现,所以一个实现正确的接收端不应该尝试解析 Reason String 的内容,推荐的使用方式包括但不限于在抛出异常时使用 Reason String,或者将它写入日志。
Reason String 是一个可选的功能,是否会收到 Reason String 取决于对端是否支持。
02
Reason Code 速查表
原文始发于微信公众号(IoT物联网技术):IoT 物联网 MQTT 5.0 中 Reason Code 详解
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论