关于mqtt不适合移动聊天消息推送的个人见解

来源:互联网 发布:费沃斯数据 编辑:程序博客网 时间:2024/04/27 00:22

很多网站和文章介绍mqtt特性,因其头部很小(2Byte),适合弱网络环境的数据传输,但在聊天信息过于密集的场景下,其会表现出消息延迟的现象,原因分析如下:

mqtt 协议支持三种QoS,以Qos=2(保证消息可达)为例介绍,服务端一条消息发送到客户端需要交互4次:

第一次:  server发送 publish到client;

第二次:  client发送pubrec到server;

第三次:  server发送pubrel到client;

第四次:  client发送pubcomp到server。

在群组聊天中,如果先后有10条消息服务器需要发送到客户端,则总共需要交互40次,在弱网络环境下很难保证一次成功!

解决方案:在mqtt协议中引入机遇版本号的消息传输协议,即消息通过版本号维护顺序,服务器消息到达后,server只负责push通知,client收到后发出同步请求,server按照版本连续发送msq, client告诉server收到的最后的版本号!


弱网络环境小的通讯协议应该具备以下几个feature:

1 数据包足够小(像mqtt协议规定的那样,只有2byte)

2 交互次数足够少,尽量减少无意义应答,提高网络带宽的利用率

3 可靠,不丢消息

4 极易扩展

0 0