mqtt质量等级QOS

1.mqtt长连接在项目的应用:
消息中心:消息中心页及消息列表页
随访:随访聊天窗口
2.mqtt协议中的QOS
消息质量等级Qos0:


mqtt质量等级QOS_第1张图片
image.png

消息质量等级Qos1:
当使用QoS 等级1 时, 它保证信息将会被至少发送一次给接受者。但是消息也可能被发送两次甚至更多。
发送者将会存储发送的信息直到发送者收到一次来自接收者的PUBACK格式的应答。
如果在特定的时间内(timeout)发送端没有收到PUBACK应答,那么发送者会重新发送PUBLISH消息。如果接受者接收到QoS为1 的消息,它会立即处理这里消息,比如把这个包发送给订阅该主题的接收端,并回复PUBACK包。


mqtt质量等级QOS_第2张图片
image.png

消息质量等级Qos2:
具体流程:
1.接收者收到publis的QoS2的消息之后,接受者需要保存一个msgid的记录,并且进入一个状态,即之后不管来了几个这个msgid的消息,都不管他,认为是重复的,丢弃。
2.接收到publish的QoS2消息之后,不能马上投递,而是在本地做持久化,将消息保存起来。
3.收到publish的QoS2消息之后,马上回复一个pubrec给发送端。
4.发送端在收到pubrec之后,应该认为接受者已经收到消息,将publish的消息转入等待pubcomp的阶段,不再重发publish,转而下发pubrel。

5.接收者收到pubrel之后,正式将消息投递出去。投递之后,销毁该msgid,返回pubcomp给服务器,销毁之前的持久化消息。
6.之后不管服务器来多少pubrel,都没有messagid的记录,只需要回复pubcomp,不需要投递给上层。

mqtt质量等级QOS_第3张图片
image.png

参考链接:
MQTT协议QoS2 准确一次送达的实现:https://blog.csdn.net/zerooffdate/article/details/78950907
Mqtt Qos 深度解读:
https://www.jianshu.com/p/8b0291e8ee02
Mqtt之服务质量等级Qos:https://blog.csdn.net/yangguosb/article/details/78653228
MQTT协议的初浅认识之通讯级别和持久会话:
https://www.liangzl.com/get-article-detail-18969.html

你可能感兴趣的:(mqtt质量等级QOS)