概述
3.10取消订阅 - 取消订阅主题
客户端向服务器发送UNSUBSCRIBE数据包,以取消订阅主题。
3.10.1固定标题
图3.28 - UNSUBSCRIBE数据包固定标头
位 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
字节1 | MQTT控制包类型(10) | 保留的 | ||||||
| 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
字节2 | 剩余长度 |
UNSUBSCRIBE控制包的固定标题的第3,2,1和0位保留,并且必须分别设置为0,0,1和0。服务器必须将任何其他值视为格式错误并关闭网络连接 [MQTT-3.10.1-1]。
剩余长度字段
这是变量头的长度(2个字节)加上有效载荷的长度。
3.10.2 Varliable 变量头
变量头包含数据包标识符。第2.3.1节提供了有关数据包标识符的更多信息。
图3.29 - UNSUBSCRIBE数据包变量头
位 | 7 | 6 | 五 | 4 | 3 | 2 | 1 | 0 |
字节1 | 包标识符MSB | |||||||
字节2 | 包标识符LSB |
3.10.3 Payload 有效载荷
UNSUBSCRIBE数据包的有效负载包含客户希望取消订阅的主题过滤器列表。UNSUBSCRIBE数据包中的主题过滤器必须是第1.5.3 节中定义的UTF-8编码字符串,连续打包[MQTT-3.10.3-1]。
UNSUBSCRIBE数据包的有效载荷必须包含至少一个主题过滤器。没有有效载荷的UNSUBSCRIBE数据包是协议违规 [MQTT-3.10.3-2]。有关处理错误的信息,请参见第4.8节。
3.10.3.1 有效载荷非规范性示例
图3.30-有效载荷字节格式非规范性示例显示了表3.7中简要描述的UNSUBSCRIBE数据包的有效载荷- 有效载荷非规范示例。
表3.7 - 有效载荷非规范性示例
主题过滤器 | “A / B” |
主题过滤器 | “光盘” |
图3.30 - 有效载荷字节格式非规范示例
| 描述 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
主题过滤器 | |||||||||
字节1 | 长度MSB(0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
字节2 | 长度LSB(3) | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
字节3 | 'a'(0x61) | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
字节4 | '/'(0x2F) | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 |
字节5 | 'b'(0x62) | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 |
主题过滤器 | |||||||||
字节6 | 长度MSB(0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
字节7 | 长度LSB(3) | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
字节8 | 'c'(0x63) | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 |
字节9 | '/'(0x2F) | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 |
字节10 | 'd'(0x64) | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |
3.10.4 Response 回应
必须逐个字符地比较UNSUBSCRIBE数据包中提供的主题过滤器(无论它们是否包含通配符)与服务器为客户端保存的当前主题过滤器集。如果任何过滤器完全匹配,则删除其拥有的订阅,否则不会发生其他处理 [MQTT-3.10.4-1]。
如果服务器删除订阅:
- 它必须停止添加任何新消息以传递给客户端 [MQTT-3.10.4-2]。
- 它必须完成已开始发送给客户端 [MQTT-3.10.4-3] 的任何QoS 1或QoS 2消息的传递。
- 它可以继续提供缓冲的任何现有消息,以便传递给客户端。
服务器必须通过发送UNSUBACK数据包来响应UNSUBSUBCRIBE请求。UNSUBACK数据包必须具有与UNSUBSCRIBE数据包 [MQTT-3.10.4-4] 相同的数据包标识符。 即使没有删除主题订阅,服务器也必须使用UNSUBACK [MQTT-3.10.4-5]进行响应。
如果服务器收到包含多个主题过滤器的UNSUBSCRIBE数据包,它必须处理该数据包,就好像它已经收到多个UNSUBSCRIBE数据包的序列,除了它只发送一个UNSUBACK响应 [MQTT-3.10.4-6]。
最后
以上就是如意中心为你收集整理的IOT-MQTT协议-控制数据包-UNSUBSCRIBE的全部内容,希望文章能够帮你解决IOT-MQTT协议-控制数据包-UNSUBSCRIBE所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复