本文介紹物聯網平台支援的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 |