MQTT——取消订阅报文和断开连接报文

笔者已经把连接报文,订阅报文,发布报文都讲解了完了。而接下来就是取消订阅报文和断开连接报文。和其他的报文比较的话,他们显示非常简单。甚至笔者觉得可以不必要拿出来讲。只要看一下MQTT文档就没有什么不清楚的。为了完整一点笔者就把他们放在一直了。

取消订阅报文

固定报头的结构笔者不都说了。主要记得固定报头的QOS为1就行了。笔者把官方的列表贴过来了。如下

我们知道固定报头分三部分,一个是报文类型,一个是报文标示。一个是剩余长度。取消订阅报文类型的值为10。然后我们看QOS 为1。对应的二进制为10100010。Remaining Length为剩余长度,同样子二进制为八位。所以固定报头的二进制一定是10100010  xxxxxxxx。

 xxxxxxxx表示剩余长度的二进制。后面笔者还会抓包来看。

可变报头里面就一个消息ID的项。没有其他的。

有效载何里面存放的是主题列表。就是用于取消订阅的主题列表。如下

笔者不知道到现还有没有人看不懂这种列表的。Topic Filter为主题过滤,即是主题名。而byte 1类似这种表示每一元素。比如上面举列中的Topic Filter是有五元素组成的。后面是每一个元素的二进制。

MQTT 文档里面对取消订阅报文并没有特别的要求。也只是删除的动作做了一些要求。删除这个订阅的时候,就必须停止发送任何信息了。同时如果有正在分送中的QOS 1 QOS2的信息就必须要完成才行。当然也可以分送准备的缓存信息。

上面我们看到了取消订阅报文的QOS为1。所以会有一个回应。即是取消订阅确定报文(UNSUBACK)。取消订阅确定报文(UNSUBACK)只有固定报头和可变报头,可变报头里面只有一个消息ID的项。没有什么可说的。

相关的包

取消订阅报文

取消订阅确定报文

我们可以看到取消订阅报文有多么的简单,但是还是不如断开连接报文来的简单。因为断开连接报文没有可变报头,没有有效载荷。就一个固定报头。没有错就是一个固定报头。不多说,笔者把固定报头的列表贴出来。如下

上面的列表就是断开连接报文的全部。

断开连接报的结构是最简单的。但是文档中还是指出了几点要注意的。

1)判断固定报头中的标示部分必须是0000,如果不是0就断开连接。

2)客户端不能在通过该连接发送任何信息了。

3)服报端要删除与当前连接关联的未发布的遗嘱消息。同时如果客户端没有断开的话,服务端必须断开。

断开连接报文

 

转载于:https://www.cnblogs.com/hayasi/p/7821093.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值