IoT 物联网 MQTT 5.0 中 Reason Code 详解

IoT 物联网 MQTT 5.0 中 Reason Code 详解_第1张图片

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。

IoT 物联网 MQTT 5.0 中 Reason Code 详解_第2张图片

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 速查表

你可能感兴趣的:(物联网,java,开发语言)