客户端向服务器发送取消订阅数据包,以取消订阅主题。
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