客戶端向服務器發送取消訂閱數據包,以取消訂閱主題。
1. 固定包頭 Fixed header
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
byte 1 |
MQTT Control Packet type (10) |
Reserved |
||||||
|
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
byte 2 |
Remaining Length |
2. 可變包頭 Variable header
可變包頭用來傳輸 數據包標識符 PacketIdentifier
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
byte 1 |
Packet Identifier MSB |
|||||||
byte 2 |
Packet Identifier LSB |
3. 載荷 Payload
UNSUBSCRIBE 數據包的Payload包含客戶端希望取消訂閱的主題過濾器列表。 用UTF-8編碼。
UNSUBSCRIBE 數據包的有效負載必須包含至少一個主題過濾器。 沒有有效負載的 UNSUBSCRIBE 數據包違反協議。
示例:
Topic Filter |
“a/b” |
Topic Filter |
“c/d” |
Payload 編碼爲:
|
Description |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Topic Filter |
|||||||||
byte 1 |
Length MSB (0) |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
byte 2 |
Length LSB (3) |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
byte 3 |
‘a’ (0x61) |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
byte 4 |
‘/’ (0x2F) |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
byte 5 |
‘b’ (0x62) |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
Topic Filter |
|||||||||
byte 6 |
Length MSB (0) |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
byte 7 |
Length LSB (3) |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
byte 8 |
‘c’ (0x63) |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
byte 9 |
‘/’ (0x2F) |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
byte 10 |
‘d’ (0x64) |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
4. 響應處理 Response
- 服務器收到數據包後與UNSUBSCRIBE 中的Topic Filter 進行比對,如果匹配,則刪除,否則不做任何處理。
- 如果服務器刪除成功,則停止添加發布該主題消息給客戶端
- 必須要完成已經開始發送到客戶端的任何 QoS1 或 QoS2消息的傳遞
- 服務端必鬚髮送UNSUBACK數據包來響應UNSUBSCRIBE 的請求。
- UNSUBACK數據包必須具有與UNSUBSCRIBE 相同的PacketIdentifier