本文介绍物联网平台支持的MQTT 5.0新特性的增强端云交互功能说明。
功能说明
MQTT 5.0设计目标之一就是提高设备端和服务端之间的透明度和互操作性,增强端云交互主要包含以下特性:
建连反馈
建连反馈是提供一种设备端和服务端协商的能力,客户端建连时设置配置参数,服务端回复最终支持的功能以及配置项最后的值。
建连反馈 | 参数说明 | 物联网平台返回 |
是否支持保留消息 |
| 1 |
是否支持通配订阅 |
| 1 |
是否支持订阅标志符 |
| 0 |
是否支持共享订阅 |
| 1 |
是否支持主题别名 |
| 1 |
支持的最高QoS |
| 1 |
连接保活时间 | 在保活时间内需要有心跳包或数据包,否则会被断开连接。 取值范围:30~1200。 | 返回设备设置值。 若设置值超出范围,会断开连接。 |
会话过期时间 | 连接断开后,会话的保留时间。 取值范围:0~0xFFFFFFFF。 | 返回设备设置值。 未设置时,默认值为0。 |
最大的数据包长度 | 取值范围:0~0xFFFFFFFF。 | 固定值262144,表示256 KB。 |
最大主题别名个数 | 取值范围:0~0xFFFFFFFF。 | 固定值20。 |
服务端主动断开
在MQTT 3.1.1中,如果设备端违反某个规则,会被直接断开网络连接,难以从设备端排查具体原因。
在MQTT 5.0中,服务端可以发送主动断开报文,并支持设置一个错误码及错误原因的字符串,用户可以根据返回的错误内容排查具体出错的原因。
错误码增强
增强项 | MQTT 3.1 | MQTT 5.0 |
更详细的错误码 | 错误码个数5个。 | 错误码个数20个。 |
错误原因支持字符串 | 无。 | 新增错误原因属性,可以把详细的错误码类型发送给客户端,方便调试及问题排查。 |
更多的消息支持错误码 | 仅CONNECT报文支持错误码返回。 | 增加支持UNSUBACK、PUBACK、DISCONNECT等报文错误码返回。 |
错误码明细
十进制 | 十六进制 | 名称 | 报文 |
0 | 0x00 | 成功(Success) | CONNACK,PUBACK,PUBREC,PUBREL,PUBCOMP,UNSUBACK,AUTH |
128 | 0x80 | 未指定错误(Unspecified error) | CONNACK,PUBACK,PUBREC,SUBACK,UNSUBACK,DISCONNECT |
129 | 0x81 | 畸形报文(Malformed Packet) | CONNACK,DISCONNECT |
130 | 0x82 | 协议错误(Protocol Error) | CONNACK,DISCONNECT |
132 | 0x84 | 不支持的协议版本(Unsupported Protocol Version) | CONNACK |
136 | 0x88 | 服务器不可用(Server unavailable) | CONNACK |
137 | 0x89 | 服务器繁忙(Server busy) | CONNACK,DISCONNECT |
138 | 0x8A | 禁止访问(Banned) | CONNACK |
140 | 0x8C | 错误验证方法(Bad authentication method) | CONNACK,DISCONNECT |
141 | 0x8D | 保活超时(Keep Alive timeout) | DISCONNECT |
144 | 0x90 | 主题名无效(Topic Name invalid) | CONNACK,PUBACK,PUBREC,DISCONNECT |
147 | 0x93 | 超出接收最大值(Receive Maximum exceeded) | DISCONNECT |
148 | 0x94 | 主题别名无效(Topic Alias invalid) | DISCONNECT |
149 | 0x95 | 报文太大(Packet too large) | CONNACK,DISCONNECT |
150 | 0x96 | 消息传输速率太高(Message rate too high) | DISCONNECT |
151 | 0x97 | 超出限额(Quota exceeded) | CONNACK,PUBACK,PUBREC,SUBACK,DISCONNECT |
152 | 0x98 | 管理行为(Administrative action) | DISCONNECT |
153 | 0x99 | 有效载荷格式无效(Payload format invalid) | PUBACK,PUBREC,DISCONNECT |
154 | 0x9A | 不支持消息保留(Retain not supported) | CONNACK,DISCONNECT |
155 | 0x9B | 不支持的QoS(QoS not supported) | CONNACK,DISCONNECT |
156 | 0x9C | 使用另一台服务器(Use another server) | CONNACK,DISCONNECT |
157 | 0x9D | 服务器被移除(Server moved) | CONNACK,DISCONNECT |
158 | 0x9E | 不支持的共享订阅(Shared Subscription not supported) | SUBACK,DISCONNECT |
159 | 0x9F | 超出连接速率(Connection rate exceeded) | CONNACK,DISCONNECT |