MQTT QoS级别
MQTT支持三个QoS(服务质量)级别:0,1和2。QoS 0表示消息最多发送一次,可能丢失或重复;QoS 1保证消息至少发送一次,并且始终按顺序传递;QoS 2则提供最高级别的可靠性,确保恰好一次交付,并且严格按照顺序传递。
最后遗愿消息
最后遗愿消息是一种特殊类型的消息,在客户端非正常断开连接时将自动发布。它通常用于指示某个设备已经下线或无法响应。
以上是MQTT协议的一些详细信息及其相关概念。
MQTT控制报文的类型
请求类型 | 类型名称 | 英文类型名 | 请求方向 |
---|---|---|---|
0 | 保留 | Reserved | 无 |
1 | 连接 | CONNECT | 客户端到服务器 |
2 | 连接确认 | CONNACK | 服务器到客户端 |
3 | 发布 | PUBLISH | 两个方向都允许 |
4 | 发布确认 | PUBACK | 两个方向都允许 |
5 | 发布重传 | PUBREC | 两个方向都允许 |
6 | 发布完成 | PUBREL | 两个方向都允许 |
7 | 发布释放 | PUBCOMP | 两个方向都允许 |
8 | 订阅 | SUBSCRIBE | 客户端到服务器 |
9 | 订阅确认 | SUBACK | 服务器到客户端 |
10 | 取消订阅 | UNSUBSCRIBE | 客户端到服务器 |
11 | 取消订阅确认 | UNSUBACK | 服务器到客户端 |
12 | 心跳请求 | PINGREQ | 客户端到服务器 |
13 | 心跳请求确认 | PINGRESP | 服务器到客户端 |
14 | 断开连接 | DISCONNECT | 客户端到服务器 |
15 | 保留 | Reserved | 无 |
MQTT协议的connectAck是MQTT客户端连接建立后,MQTT代理(服务器)回复给客户端的确认消息。以下是MQTT connectAck的响应消息包含的信息:
MQTT connectAck
当MQTT客户端成功连接到MQTT代理时,MQTT代理(服务器)会回复一个“connectAck”消息,用于确认连接是否成功建立。connectAck消息通常包含以下内容:
Return Code
Return code表示MQTT代理对于客户端请求连接的响应状态码。它用于表示连接成功或失败,并提供有关发生错误的更多细节。不同的返回码可以表示不同类型的错误,例如拒绝未授权的访问等。
以下是相应的表格和代码:
返回码 | 响应 |
---|---|
0 | 连接接受 |
1 | 连接拒绝,不可接受的协议版本 |
2 | 连接拒绝,标识符拒绝 |
3 | 连接拒绝,服务器不可用 |
4 | 连接拒绝,错误的用户名和密码 |
5 | 连接拒绝,未授权 |
Connect Flags
Connect flags是由MQTT客户端在连接请求消息中发送的标志位。它允许指定MQTT连接中使用的一些参数,例如清空保留消息、使用安全套接字层等。
Keep Alive
Keep alive指定了一个时间间隔,在该时间间隔内,MQTT代理将检查客户端是否仍然在线。如果MQTT代理没有收到来自客户端的心跳消息,则认为客户端已经掉线,会主动断开客户端连接。
MQTT心跳包机制
MQTT协议提供了心跳包机制,用于确认连接是否打开,并且broker和客户端都连接上了对方。这种机制使得客户端能够设定一定时间间隔,并根据此间隔定期地向broker发送消息。心跳时间是broker和客户端所能接受的最长通信周期。
心跳周期
心跳机制的最长周期是18小时12分15秒。如果心跳周期为0,则心跳机制将无效。
发送PINGREQ报文
当没有任何其他控制报文从客户端发给服务端时,客户端可以通过发送PINGREQ报文告知服务端它仍然活着。PINGREQ报文用于以下目的:
- 在客户端未发送任何其他控制报文时,告知服务端客户端还处于活跃状态。
- 请求服务端发送响应来确认自己仍然活着。
- 通过使用网络来确认网络连接是否已断开。
这些措施有助于保持客户端与MQTT Broker之间的可靠通信,并防止因某些原因导致连接的意外关闭。
Payload
Payload包含与MQTT连接相关的其他元数据,例如质量保证级别,提供的最后愿望消息等。
以上是MQTT connectAck的响应消息包含的信息。它提供了有关与MQTT连接相关的各种信息和参数。了解connectAck消息可以帮助开发者快速诊断MQTT连接问题,确保连接可以稳定和可靠地工作。
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!
需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!