我是靠谱客的博主 长情月亮,最近开发中收集的这篇文章主要介绍【MQTT协议学习】四、取消订阅主题UnSubscribe报文构建,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在本文中,我们取消订阅testpublish主题。

文章目录

    • UNSUBSCRIBE –取消订阅
      • UNSUBSCRIBE报文固定报头
      • 可变报头
      • 有效载荷
    • 示例测试

UNSUBSCRIBE –取消订阅

客户端发送UNSUBSCRIBE报文给服务端,用于取消订阅主题。
取消订阅报文包含三部分:固定报头、可变报头和有效载荷

固定报头类型码1字节+剩余字节长度1字节(或更多)
可变报头报文标识符2字节
有效载荷主题长度(2字节)+主题(n字节)

UNSUBSCRIBE报文固定报头

Bit76543210
byte 1MQTT控制报文类型 (10)保留位
10100010
byte 2剩余长度

所以我们报文头为:

A2 XX

其中XX为剩余长度,等于可变报头的长度加上有效载荷的长度。我们最后补充

可变报头

Bit76543210
byte 1报文标识符 MSB
byte 2报文标识符 LSB

可变报头即为我们的报文标识符,报文标识符实际上是ID,阿里云会返回这个ID,便于程序进行判断。由于我们订阅报文是ID为10,这儿我们使用11,即订阅的ID+1
此时报文体变为

A2 XX 00 0B

有效载荷

有效载荷包含了两个字节的长度,和主题信息。例如我们取消订阅"a/b"主题,则有效载荷如下:

描述76543210
主题过滤器
byte 1Length MSB (0)00000000
byte 2Length LSB (3)00000011
byte 3‘a’ (0x61)01100001
byte 4‘/’ (0x2F)00101111
byte 5‘b’ (0x62)01100010

我们取消的是testpublish报文,所以载荷为:

00 0B 74 65 73 74 70 75 62 6C 69 73 68

此时报文为:

A2 XX 00 0A 00 0B 74 65 73 74 70 75 62 6C 69 73 68

我们计算XX的值,后面报文总长度为15,所以XX 为0F

A2 0F 00 0B 00 0B 74 65 73 74 70 75 62 6C 69 73 68

示例测试

我们仍旧使用串口调试助手操作无线模块进行数据透传。

  • 1.登录
  • 2.发布主题消息 “HelloWorld!”
  • 3.订阅主题 testpublish
  • 4.发布主题消息 “HelloWorld!”
  • 5.取消订阅 testpublish
  • 6.重新发布主题消息 “HelloWorld!”

从下面图上,我们可以看出,订阅后我们可以收到我们发布的消息;取消订阅后,服务器不再推送消息

最后

以上就是长情月亮为你收集整理的【MQTT协议学习】四、取消订阅主题UnSubscribe报文构建的全部内容,希望文章能够帮你解决【MQTT协议学习】四、取消订阅主题UnSubscribe报文构建所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部