当前位置: 首页 > news >正文

MQTT协议-取消订阅和取消订阅确认

MQTT协议-取消订阅和取消订阅确认

客户端向服务器取消订阅

取消订阅的前提是客户端已经通过CONNECT报文连接上服务器,并且订阅了一个主题

UNSUBSCRIBE—取消订阅

取消订阅的报文同样是由固定报头+可变报头+有效载荷组成

固定报头由两个字节组成,第一个字节固定为A2,第二个字节是剩余长度

在这里插入图片描述

可变报头的字节与订阅主题报文的可变报头内容一致,也就是取消和订阅的是同一个主题,不能没有订阅就取消,根据前面文章知道订阅主题报文的可变报头为00 0A,所以这里也是00 0A

在这里插入图片描述

在订阅主题时有效载荷是由主题过滤器和服务质量要求组成的,但这里取消订阅就没有了服务质量要求,只有一个主题过滤器,该主题也是具有订阅权限的Topic类,要转为十六进制才能组合报文

在这里插入图片描述

将自己的订阅权限Topic类转为十六进制,长度为30,十六进制为1E,结果如下

在这里插入图片描述

网络调试助手发送取消订阅报文

先发送CONNECT报文连接阿里云,再发送订阅主题报文,最后发送取消订阅主题报文,阿里云回复了取消订阅确认报文B0 02 00 0A,后续对该报文进行解析

在这里插入图片描述

UNSUBACK一取消订阅确认

阿里云回复的取消订阅确认报文由固定报头+可变报头+有效载荷组成

固定报头如下

在这里插入图片描述

可变报头与取消订阅报文的可变报头一致,都表示同一个Topic主题

在这里插入图片描述

取消订阅确认报文没有有效载荷,所以这一部分为空

在这里插入图片描述

因此,将固定报头+可变报头+有效载荷组合起来,就得到了B0 ?? 00 0A

根据剩余长度计算方法可知,??后面只有两个字节,因此剩余长度为02,所以取消订阅确认的完整报文为:B0 02 00 0A

http://www.lryc.cn/news/35200.html

相关文章:

  • 90后小伙,用低代码“整顿”旅游业,年入2000万,他是怎么做到的?
  • C51---PWM 脉冲宽度调制
  • 毕业设计 基于51单片机WIFI智能家居系统设计
  • Nginx服务优化措施与配置防盗链
  • Java 某厂面试题真题合集
  • 很特别的5G市场,5.75亿部手机,却有11亿5G用户,这是怎么了?
  • go modules
  • Baklib客户故事:快递助手ERP
  • MongoDB学习(java版)
  • RK3568平台开发系列讲解(显示篇)什么是DRM
  • Python蓝桥杯训练:基本数据结构 [二叉树] 上
  • vuex基础之初始化功能、state、mutations、getters、模块化module的使用
  • WebSphere中间件漏洞总结
  • Unity之ASE实现影魔灵魂收集特效
  • 半入耳式耳机运动会不会掉、佩戴超稳固的运动耳机推荐
  • 使用Tensorflow完成一个简单的手写数字识别
  • OpenGL三种向着色器传递数据的方法 attributes,uniform,texture以及中间产物
  • 详解package.json和package-lock
  • 02-CSS
  • JavaScript 中的类型转换机制以及==和===的区别
  • RocketMQ基础篇(一)
  • Android前沿技术—gradle中的build script详解
  • 深入浅出PaddlePaddle函数——paddle.zeros_like
  • 物料-零部件分类属性
  • TypeError: cannot pickle ‘module‘ object
  • [MySQL索引]3.索引的底层原理(二)
  • JavaScript混淆——逆向思维的艺术
  • 数据库管理-第六十期 监听(20230309)
  • 概率论与数理统计相关知识
  • SOC计算方法:卡尔曼滤波算法