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

5. MQTT消息类型详解(三)

9 SUBACK消息

9.1 消息结构

SUBACK消息是订阅确认消息,格式如下:

+-------------------------------+
|   消息类型(1字节)           |
+-------------------------------+
|   保留标志(1字节)           |
+-------------------------------+
|   QoS等级(2字节)           |
+-------------------------------+
|   保留标志(1字节)           |
+-------------------------------+
|   消息剩余长度(2字节)       |
+-------------------------------+
|   消息ID(2字节)             |
+-------------------------------+
|   主题QoS等级(1字节)       |
+-------------------------------+
9.2 使用场景
  • 订阅确认:代理确认客户端的订阅请求,返回主题的QoS等级。
  • 状态反馈:提供订阅成功或失败的反馈。
9.3 示例
消息类型:9
保留标志:0
QoS等级:0
消息剩余长度:4
消息ID:1
主题QoS等级:1

10 UNSUBSCRIBE消息

10.1 消息结构

UNSUBSCRIBE消息用于客户端向代理发送取消订阅请求,格式如下:

+-------------------------------+
|   消息类型(1字节)           |
+-------------------------------+
|   保留标志(1字节)           |
+-------------------------------+
|   QoS等级(2字节)           |
+-------------------------------+
|   保留标志(1字节)           |
+-------------------------------+
|   消息剩余长度(2字节)       |
+-------------------------------+
|   消息ID(2字节)             |
+-------------------------------+
|   主题长度(2字节)           |
+-------------------------------+
|   主题(字符串)             |
+-------------------------------+
10.2 使用场景
  • 取消订阅:客户端向代理发送取消订阅的主题请求。
  • 更新订阅列表:支持动态取消订阅多个主题。
10.3 示例
消息类型:10
保留标志:0
QoS等级:0
消息剩余长度:6
消息ID:1
主题长度:6
主题:sensor/temperature

11 UNSUBACK消息

11.1 消息结构

UNSUBACK消息是取消订阅确认消息,格式如下:

+-------------------------------+
|   消息类型(1字节)           |
+-------------------------------+
|   保留标志(1字节)           |
+-------------------------------+
|   QoS等级(2字节)           |
+-------------------------------+
|   保留标志(1字节)           |
+-------------------------------+
|   消息剩余长度(2字节)       |
+-------------------------------+
|   消息ID(2字节)             |
+-------------------------------+
11.2 使用场景
  • 取消订阅确认:代理确认客户端的取消订阅请求。
  • 状态反馈:提供取消订阅成功或失败的反馈。
11.3 示例
消息类型:11
保留标志:0
QoS等级:0
消息剩余长度:2
消息ID:1

12 PINGREQ消息

12.1 消息结构

PINGREQ消息是心跳请求消息,格式如下:

+-------------------------------+
|   消息类型(1字节)           |
+-------------------------------+
|   保留标志(1字节)           |
+-------------------------------+
|   QoS等级(2字节)           |
+-------------------------------+
|   保留标志(1字节)           |
+-------------------------------+
|   消息剩余长度(2字节)       |
+-------------------------------+
12.2 使用场景
  • 心跳检测:客户端定期发送PINGREQ消息,检查代理是否在线。
  • 保持连接:防止因网络不稳定而丢失连接。
12.3 示例
消息类型:12
保留标志:0
QoS等级:0
消息剩余长度:0

13 PINGRESP消息

13.1 消息结构

PINGRESP消息是心跳响应消息,格式如下:

+-------------------------------+
|   消息类型(1字节)           |
+-------------------------------+
|   保留标志(1字节)           |
+-------------------------------+
|   QoS等级(2字节)           |
+-------------------------------+
|   保留标志(1字节)           |
+-------------------------------+
|   消息剩余长度(2字节)       |
+-------------------------------+
13.2 使用场景
  • 心跳响应:代理响应客户端的PINGREQ消息,确认连接状态。
  • 连接保持:确保客户端和代理之间的连接保持活跃。
13.3 示例
消息类型:13
保留标志:0
QoS等级:0
消息剩余长度:0

14 DISCONNECT消息

11 消息结构

DISCONNECT消息用于客户端断开连接的请求,格式如下:

+-------------------------------+
|   消息类型(1字节)           |
+-------------------------------+
|   保留标志(1字节)           |
+-------------------------------+
|   QoS等级(2字节)           |
+-------------------------------+
|   保留标志(1字节)           |
+-------------------------------+
|   消息剩余长度(2字节)       |
+-------------------------------+
12 使用场景
  • 连接断开:客户端主动请求断开与代理的连接。
  • 清理资源:完成数据传输后,释放连接资源。
13 示例
消息类型:14
保留标志:0
QoS等级:0
消息剩余长度:0

本章详细介绍了MQTT协议中的各类消息类型,包括CONNECT、CONNACK、PUBLISH、PUBACK、PUBREC、PUBREL、PUBCOMP、SUBSCRIBE、SUBACK、UNSUBSCRIBE、UNSUBACK、PINGREQ、PINGRESP和DISCONNECT。每种消息类型的结构和使用场景已经详细讲解,帮助开发者更好地理解和应用MQTT协议。

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

相关文章:

  • TypeScript JSX
  • java里的序列化反序列化、HttpMessageConverter、Jackson、消息转化器、对象转化器...都是啥?
  • GNU/Linux - memtool使用
  • Qt5.12.8源码交叉编译带openssl版本
  • 串行并行数据转换
  • 推荐一个优秀的 .NET MAUI 组件库
  • 用Manim创建条形图【BarChart】
  • iMES工厂管家:强大的工厂管理系统
  • iOS ------ 事件响应链
  • Go 语言 switch 语句的特点
  • 【递归】什么是递归-C语言为例
  • vue针对低版本浏览器不兼容es6特性解决方案,
  • 嵌入式内存管理高频面试题及参考答案(4万字长文)
  • TinyWebserver的复现与改进(2):项目的整体框架
  • R 语言学习教程,从入门到精通,R 字符串(10)
  • QT 简易音乐播放器
  • 代码随想录八股训练营day32
  • 11.面试题——消息队列RabbitMQ
  • MySQL运维-日志
  • synchronized重量级锁的实现原理是怎样的
  • 探索 GLTF 的世界:3D 内容的未来
  • 【深度学习】【语音】TTS, CM-TTS,TTS扩散模型,论文
  • 【网络协议】网络劫持 - ARP_DNS欺骗篇
  • Linux 系统框架分析(一)
  • Leetcode 剑指 Offer II 090.打家劫舍 II
  • 上海冷链配送新篇章 华鼎冷链科技以卓越服务餐饮品牌
  • 学习鸿蒙-应用市场申请签名
  • LayUi插件
  • 使用tailwindcss轻松实现移动端rem适配
  • 2021-11-08 51单片机2位秒表启动清零