這篇文章主要講解了“MQTT 5.0原因碼與否認(rèn)應(yīng)答是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“MQTT 5.0原因碼與否認(rèn)應(yīng)答是什么”吧!
創(chuàng)新互聯(lián)專(zhuān)注于企業(yè)營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、網(wǎng)站重做改版、察哈爾右翼后網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5、商城系統(tǒng)網(wǎng)站開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性?xún)r(jià)比高,為察哈爾右翼后等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
MQTT v3.1.1 協(xié)議只有 10 種返回碼,這些返回碼所能表示的含義很少,且相同的返回碼的值在不同的報(bào)文中可以有不同的含義。
在 CONNECT 報(bào)文中只有 6 種返回碼,只有當(dāng)服務(wù)器發(fā)回的 CONNACK 報(bào)文的返回碼為 0時(shí)才表示連接建立成功。
值 | 返回碼 | 描述 |
---|---|---|
0 | 0x00 接受連接 | 接受連接 |
1 | 0x01 拒絕連接,不支持的協(xié)議版本 | 服務(wù)器不支持該客戶(hù)端請(qǐng)求的 MQTT 協(xié)議 |
2 | 0x02 拒絕連接, 拒絕的客戶(hù)端 ID | 客戶(hù)端 ID 是正確的 UTF-8 字符串,但是不被服務(wù)器允許 |
3 | 0x03 拒絕連接,服務(wù)器不可用 | 網(wǎng)絡(luò)連接已經(jīng)建立,但是 MQTT 服務(wù)不可用 |
4 | 0x04 拒絕連接,損壞的用戶(hù)名或密碼 | 在用戶(hù)名或密碼中的數(shù)據(jù)是錯(cuò)誤格式的 |
5 | 0x05 拒絕連接,未授權(quán) | 客戶(hù)端的連接未被授權(quán) |
6-255 | 預(yù)留給將來(lái)使用 |
在 SUBACK 報(bào)文中只有 4 種返回碼
值 | 返回碼 | 描述 |
---|---|---|
0 | 0x00 成功 | 最大允許 QoS 0 的消息 |
1 | 0x01 成功 | 最大允許 QoS 1 的消息 |
2 | 0x02 成功 | 最大允許 QoS 2 的消息 |
128 | 0x80 失敗 | 失敗 |
SUBACK 報(bào)文有四種返回碼,除了返回碼 0x80 表示失敗,其他返回碼都表示訂閱成功, 3 個(gè)值 0, 1, 2 分別代表訂閱接收到的消息的最大 QoS 值。
MQTT v5.0 協(xié)議將返回碼改名成了原因碼,增加了用于表示更多類(lèi)型的錯(cuò)誤的原因碼。
下表是原因碼列表,分別表示的是原因碼的值以及包含原因碼的控制報(bào)文:
十進(jìn)制 | 十六進(jìn)制 | 名稱(chēng) | 報(bào)文 |
---|---|---|---|
0 | 0x00 | 成功 (Success) | CONNACK, PUBACK, PUBREC, PUBREL, PUBCOMP, UNSUBACK, AUTH |
0 | 0x00 | 準(zhǔn)許 QoS 0 (Granted QoS 0) | SUBACK |
1 | 0x01 | 準(zhǔn)許 QoS 1 (Granted QoS 1) | SUBACK |
2 | 0x02 | 準(zhǔn)許 QoS 2 (Granted QoS 2) | SUBACK |
4 | 0x04 | 以遺囑消息斷開(kāi)連接 (Disconnect with Will Message) | DISCONNECT |
16 | 0x10 | 沒(méi)有匹配的訂閱者 (No matching subscribers) | PUBACK, PUBREC |
17 | 0x11 | 沒(méi)有訂閱 (No subscription existed) | UNSUBACK |
24 | 0x18 | 繼續(xù)認(rèn)證 (Continue authentication) | AUTH |
25 | 0x19 | 重新認(rèn)證 (Re-authenticate) | AUTH |
128 | 0x80 | 未指定錯(cuò)誤 (Unspecified error) | CONNACK, PUBACK, PUBREC, SUBACK, UNSUBACK, DISCONNECT |
129 | 0x81 | 畸形報(bào)文 (Malformed Packet) | CONNACK, DISCONNECT |
130 | 0x82 | 協(xié)議錯(cuò)誤 (Protocol Error) | CONNACK, DISCONNECT |
131 | 0x83 | 實(shí)現(xiàn)特有錯(cuò)誤 (Implementation specific error) | CONNACK, PUBACK, PUBREC, SUBACK, UNSUBACK, DISCONNECT |
132 | 0x84 | 不支持的協(xié)議版本 (Unsupported Protocol Version) | CONNACK |
133 | 0x85 | 客戶(hù)端標(biāo)識(shí)符無(wú)效 (Client Identifier not valid) | CONNACK |
134 | 0x86 | 錯(cuò)誤的用戶(hù)名和密碼 (Bad User Name or Password) | CONNACK |
135 | 0x87 | 未授權(quán) (Not authorized) | CONNACK, PUBACK, PUBREC, SUBACK, UNSUBACK, DISCONNECT |
136 | 0x88 | 服務(wù)器不可用 (Server unavailable) | CONNACK |
137 | 0x89 | 服務(wù)器繁忙 (Server busy) | CONNACK, DISCONNECT |
138 | 0x8A | 禁止訪問(wèn) (Banned) | CONNACK |
139 | 0x8B | 服務(wù)器關(guān)機(jī)中 (Server shutting down) | DISCONNECT |
140 | 0x8C | 錯(cuò)誤驗(yàn)證方法 (Bad authentication method) | CONNACK, DISCONNECT |
141 | 0x8D | ?;畛瑫r(shí) (Keep Alive timeout) | DISCONNECT |
142 | 0x8E | 會(huì)話(huà)被接管 (Session taken over) | DISCONNECT |
143 | 0x8F | 主題過(guò)濾器無(wú)效 (Topic Filter invalid) | SUBACK, UNSUBACK, DISCONNECT |
144 | 0x90 | 主題名無(wú)效 (Topic Name invalid) | CONNACK, PUBACK, PUBREC, DISCONNECT |
145 | 0x91 | 報(bào)文標(biāo)識(shí)符在使用中 (Packet Identifier in use) | PUBACK, PUBREC, SUBACK, UNSUBACK |
146 | 0x92 | 沒(méi)有發(fā)現(xiàn)報(bào)文標(biāo)識(shí)符 (Packet Identifier not found) | PUBREL, PUBCOMP |
147 | 0x93 | 超出接收最大值 (Receive Maximum exceeded) | DISCONNECT |
148 | 0x94 | 主題別名無(wú)效 (Topic Alias invalid) | DISCONNECT |
149 | 0x95 | 報(bào)文太大 (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 | 有效載荷格式無(wú)效 (Payload format invalid) | PUBACK, PUBREC, DISCONNECT |
154 | 0x9A | 不支持消息保留 (Retain not supported) | CONNACK, DISCONNECT |
155 | 0x9B | 不支持的QoS (QoS not supported) | CONNACK, DISCONNECT |
156 | 0x9C | 使用另一臺(tái)服務(wù)器 (Use another server) | CONNACK, DISCONNECT |
157 | 0x9D | 服務(wù)器被移除 (Server moved) | CONNACK, DISCONNECT |
158 | 0x9E | 不支持的共享訂閱 (Shared Subscription not supported) | SUBACK, DISCONNECT |
159 | 0x9F | 超出連接速率 (Connection rate exceeded) | CONNACK, DISCONNECT |
160 | 0xA0 | 最大連接時(shí)間 (Maximum connect time) | DISCONNECT |
161 | 0xA1 | 不支持的訂閱標(biāo)識(shí)符 (Subscription Identifiers not supported) | SUBACK, DISCONNECT |
162 | 0xA2 | 不支持的通配符訂閱 (Wildcard Subscription not supported) | SUBACK, DISCONNECT |
原因碼是用來(lái)表明操作結(jié)果的一個(gè)單字節(jié)無(wú)符號(hào)值,小于 0x80 的原因碼表明操作的結(jié)果是成功的,正常情況下,操作成功返回的原因碼值為 0。 如果返回的原因碼大于等于 0x80,就說(shuō)明操作失敗了。
CONNACK, PUBACK, PUBREC, PUBREL, PUBCOMP, DISCONNECT 和 AUTH 控制報(bào)文的原因碼存在可變報(bào)頭中。而 SUBACK 和 UNSUBACK 報(bào)文在有效載荷中包含了一張?jiān)虼a的列表。
感謝各位的閱讀,以上就是“MQTT 5.0原因碼與否認(rèn)應(yīng)答是什么”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)MQTT 5.0原因碼與否認(rèn)應(yīng)答是什么這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!