MQTT控制報文格式 -- UNSUBSCRIBE– 客戶端取消訂閱請求

客戶端向服務器發送取消訂閱數據包,以取消訂閱主題。

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章