- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MQTT 消息传输机制(协议解读与调用实例)
MQTT 消息传输机制(协议解读与调用实例) 李阳
MQTT 消息传输机制(协议解读与调用实例)
前言
最近在研究 MQTT 时,我发现我身边的同事都在看类似 android 中实现 mqtt 通信、java 如何调用 mqtt 实现消息推送等,这种方式在现实编程中见怪不怪,也是常规的解决思
路,但也有诸多疑惑是常规思路中不能轻易达成的,原因有以下几点:
1. 代码调用简单,仅实现基本的功能;
2. 现成的类库文档较少,影响对类库的理解;
3. 开发者自身知其然,不知其所以然,等等
由此产生了很多令人困惑的问题,诸如:
1. 用户(非)正常断开连接,代码能对断开的用户进行后续的逻辑处理吗(断开后的业务回调)?
2. 消息发布后,接收者未在线,上线能接收到之前发布的消息吗?
3. 如何进行用户的登录验证?
4. 消息发送失败及接收端下线,如何确保接收端再次登录后有正常接收到消息?
5. ……
本篇会把连接(CONNECT)、心跳(PINGREQ/PINGRESP)、确认(CONNACK)、断开连接(DISCONNECT)和在一起,通过对协议的解读,结合类库的调用来对以上问题进行逐一解
答。
CONNECT
像前面所说,MQTT 有关字符串部分采用的修改版的 UTF-8 编码,CONNECT 可变头部中协议名称、消息体都是采用修改版的 UTF-8 编码。前面基本上可变头部内容不多,下面
是一个较为完整的 CONNECT 消息结构:
Description 7 6 5 4 3 2 1 0
Fixed header/固定头部
Message Type(1) DUP QoS level RETAIN
MQTT 消息传输机制(协议解读与调用实例)
MQTT 消息传输机制(协议解读与调用实例) 李阳
Description 7 6 5 4 3 2 1 0
flag
byte 1 0 0 0 1 x x x x
byte 2 Remaining Length
Variable header/可变头部
Protocol Name
byte 1 Length MSB (0) 0 0 0 0 0 0 0 0
byte 2 Length LSB (6) 0 0 0 0 0 1 1 0
byte 3 M 0 1 0 0 1 1 0 1
byte 4 Q 0 1 0 1 0 0 0 1
byte 5 I 0 1 0 0 1 0 0 1
byte 6 s 0 1 1 1 0 0 1 1
byte 7 d 0 1 1 0 0 1 0 0
byte 8 p 0 1 1 1 0 0 0 0
Protocol Version Number
byte 9 Version (3) 0 0 0 0 0 0 1 1
Connect Flags
MQTT 消息传输机制(协议解读与调用实例)
MQTT 消息传输机制(协议解读与调用实例) 李阳
Description 7 6 5 4 3 2 1 0
User Name
Flag
Password
Flag
Will
Retain
Will QoS
Will
Flag
Clean
Session
Reserved
byte 10 1 1 0 0 1 1 1 x
Keep Alive timer
byte 11 Keep Alive MSB (0) 0 0 0 0 0 0 0 0
byte 12 Keep Alive LSB (10) 0 0 0 0 1 0 1 0
Playload/消息体
Client Identifier(客户端 ID)
1-23 个字符长度,客户端到服务器的全局唯一标志,如果客户端 ID 超出 23 个字符长度,服务器需要返回码为 2,标识符被拒绝响应的 CONNACK 消
息。
处理 QoS 级别 1 和 2 的消息 ID 中,可以使用到。
必填项。
Will Topic
Will Flag 值为 1,这里便是 Will Topic 的内容。QoS 级别通过 Will QoS 字段定义,RETAIN 值通过 Will RETAIN 标识,都定义在可变头里面。
Will Message
Will Flag 若设为 1,这里便是 Will Message 定义消息的内容,对应的主题为 Will Topic。如果客户端意外的断开触发服务器 PUBLISH 此消息。
长度有可能为 0。
在 CONNECT 消息中的 Will Messag
您可能关注的文档
- JGJT23-2011回弹法检测混凝土抗压强度技术规程培探究.ppt
- 危险作业许可证(最新版GB30871-2014)试题.doc
- “拥有一颗感恩的心”主题班会说课.探究.ppt
- 电子工艺实习1试题.docx
- 陈勇军简报预案.doc
- 威信车站1号多线大桥施组试题.docx
- 电子工艺实习报告试题.doc
- “真功夫”探究.ppt
- 003项目时间管理探究.ppt
- 过滤器原理及优化探究.pdf
- DB14T 3462-2025 井工煤矿人工智能视觉识别技术要求.pdf
- 专练01 七上《朝花夕拾》—2024年中考语文名著导读抢分练(全国通用)(原卷版).pdf
- 专题29 小说常考题+病句的10个“不放过”-2023年中考语文热点作文素材解读及运用.pdf
- 专题15 最新热点时评与写作角度解读+「人民日报」时评文章精选金句汇总-2023年中考语文热点作文素材解读及运用.pdf
- 专题12 九下《儒林外史》—2024年中考语文名著导读抢分练(解析版).pdf
- 专题28 思辨类话题名言金句+5篇关于经典人物的精彩时评+热点时评-2023年中考语文热点作文素材解读及运用.pdf
- 11 七下期中记叙文阅读训练-2022-2023学年七年级语文下册知识梳理与能力训练(部编版).pdf
- 04 人物传记阅读 -2022-2023学年七年级语文下册知识梳理与能力训练(部编版) .pdf
- 专题06 八上《红星照耀中国》—2024年中考语文名著导读抢分练(解析版).pdf
- 专练02 七上《西游记》—2024年中考语文名著导读抢分练(全国通用)(原卷版).pdf
最近下载
- 护士给药环节差错防范改.ppt VIP
- (高清版)DB31∕T 1578-2025 微型消防站建设与运行要求.pdf VIP
- 《瑞幸咖啡财务造假案例分析》9300字.pdf VIP
- 2021版:IgG4相关性疾病诊治中国专家共识(最全版).pdf VIP
- QSY 08124.3-2018石油企业现场安全检查规范 第3部分:修井作业.pdf VIP
- Unit 1 My classroom PartB (同步练)人教PEP版 英语四年级上册 .docx VIP
- (完整版)高一化学铁及其化合物练习题.pdf VIP
- 《波形钢腹板》标准.docx VIP
- 郑子太极拳十三篇郑曼青.pdf VIP
- (优质!)2025医用压缩式雾化器研究资料.pdf
文档评论(0)