mqtt Qos

mqtt Qos

QoS Level 0:至多一次
意思就是给你转发一次就得了,不管你有没收到。
这个我理解是如果接收方离线了就不能收到消息,可以用在音视频聊天请求,因为当接收方离线后就不用收到请求了,就算是接收方在线但是没有收到消息也可以通过发送方超时来重发请求。

QoS Level 1:至少一次,有可能重复
也就是说服务器给你重试转发,直到服务器收到客户端的确认消息。
确保至少向客户端发送一次信息,不过也可发送多次;在接收数据包时,需要客户端返回确认消息(ACK 包)。这种方式常用于传递确保交付的信息,但开发人员必须确保其系统可以处理重复的数据包。
这个可以用在普通文本聊天, 接收方离线后,服务器自动缓存消息,等接收方上线时服务器马上把消息推送给他,就算是接收方重复收包也没关系因为可以通过消息里包含的时间来过滤掉。这个级别的消息服务器得注意限制发送方的消息大小和数量,免得服务器内存被爆掉。
QoS Level 2:只有一次,确保消息只到达一次
服务器保证你肯定能收到一次,而且只有一次。
这个用在消息重要性比较严格的场合。IM在一般情况下用不着,或者在用户发生金钱消费有关的情况下可以使用?
 
原文地址:https://www.cnblogs.com/hnxxcxg/p/10475649.html