增强端云交互

本文介绍物联网平台支持的MQTT 5.0新特性的增强端云交互功能说明。

功能说明

MQTT 5.0设计目标之一就是提高设备端和服务端之间的透明度和互操作性,增强端云交互主要包含以下特性:

建连反馈

建连反馈是提供一种设备端和服务端协商的能力,客户端建连时设置配置参数,服务端回复最终支持的功能以及配置项最后的值。

建连反馈

参数说明

物联网平台返回

是否支持保留消息

  • 1:支持。

  • 0:不支持。

1

是否支持通配订阅

  • 1:支持。

  • 0:不支持。

1

是否支持订阅标志符

  • 1:支持。

  • 0:不支持。

0

是否支持共享订阅

  • 1:支持。

  • 0:不支持。

1

是否支持主题别名

  • 1:支持。

  • 0:不支持。

1

支持的最高QoS

  • 2:QoS 2。

  • 1:QoS 1。

  • 0:QoS 0。

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