![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MQTT
文章平均质量分 52
VFSSoft
专注于
网络通信协议
文件系统设计
数据传输与同步
欢迎来交流,很高兴认识大家
展开
-
MQTT: Packet Identifier
对于 QoS 是 0 的 PUBLISH 包,不能携带 Packet Id。客户端在接受的一个带有 Packet Id 的包的 “ACK” 响应之后,可以重用当前 Packet Id。当客户端重新发送一个包的时候,必须保证这个包和之前发送时候使用的 Packet Id 相同。客户端每次发送一个新的包的时候,必须给这个包设置一个从未使用过的 Packet Id.使用 Packet Id 之后,可以并行的发送多个消息,然后等该他们对应的响应。服务器和客户端在选择 Packet Id 时,是相互独立的。原创 2024-09-02 22:02:50 · 252 阅读 · 0 评论 -
MQTT: PUBLISH
当客户端或者服务器第一次尝试发送一个 PUBLISH 消息的时候,DUP 应该未设置为 0。如果 DUP 为 1, 说明服务器或者客户端正在尝试重新传输一个之前已经发送过的 PUBLISH 消息。对于 QoS 0 的消息, DUP 应该总是为 0.对于服务器端来说,接收到的 PUBLISH 中的消息的 DUP 值不影响服务器在分发这个消息到订阅者时的 PUBLISH 消息中的 DUP 的值,它们之间没有必然联系。是否是 DUP,完全由当前将被发送的 PUBLISH 消息是否是一个重传的消息决定。原创 2024-09-02 22:02:00 · 314 阅读 · 0 评论 -
MQTT: Will Message
Will 消息需要被服务器保存在服务器端,和当前网络连接关联。Will 消息必须在后续网络连接断开之后被分发出去(Publish), 除非服务器收到了来自客户端的 Disconnect 包。当客户端主动的通过发送 DISCONNECT 断开了网络连接的情况下, Will 消息是不应该被服务器分发给订阅者的。如下情况下 Will 消息需要从 Session 中移除;在需要的时候,服务器端应该的分发 Will 消息。原创 2024-09-02 22:01:09 · 72 阅读 · 0 评论 -
MQTT: Topic Names and Topic Filters
Topic Name 和 Topic Filter 的区别就是 Topic Name 不能包含通配符,而 Topic Filter 可以包含通配符。Topic Name 标识一个具体的主题,而 Topic Filter 可以标识一个或者一组主题。原创 2024-09-02 22:00:14 · 264 阅读 · 0 评论 -
MQTT: Keep Alive
如果 Keep Alive 的值不为零,但是在1.5倍的约定时间间隔后,服务器没有收到来自客户端的控制包(包括 PINGREQ), 服务器端应该关闭与客户端的网络连接,并且把它当作一个网络错误。如果在此时间间隔内,没有其他的控制包需要发送给服务器端,客户端可以发送 PINGREQ 包。如果客户端发送了 PINGREQ 消息,但是在一定时间之后,没有收到来自服务器端的 PINGRESP 消息,客户端应该关闭当前网络连接。这个值规定了客户端从发送上一个控制包之后,到发送下一个控制包之间最大的时间间隔。原创 2024-09-02 21:59:08 · 28 阅读 · 0 评论 -
MQTT: Client Identifier
服务器端也可以支持 ClientId 是空字符串的情况。但是这种情况应该被特殊处理,服务器需要为这个 ClientId 生成一个唯一的不为空的 ClientId,然后像处理 ClientId 不为空的情况一下来处理当前 CONNECT 包。每个连接到服务器的 MQTT Client 必须设置一个唯一的 ClientId。服务器也可以支持长度大于 23 的 ClientId,也可以支持在 ClientId 中包含其他的字符。ClientId 是一个 1-23个字节的 UTF8 编码的字符串。原创 2024-09-02 21:58:11 · 316 阅读 · 0 评论 -
MQTT: Clean Session Flag
控制 Session 的状态. (Session State)Session State 用户确保在客户端和服务器之间的多个连接中可靠的传输消息。原创 2024-09-02 21:55:49 · 190 阅读 · 0 评论