关于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
- 关于mqtt不适合移动聊天消息推送的个人见解
- 基于MQTT的消息推送
- 关于select上下移动实现的一些个人见解
- C# 接受MQTT服务器推送的消息
- 移动端消息推送xmpp和mqtt对比
- 使用MQTT在移动端进行消息推送
- MQTT+ActiveMQ实现消息推送(移动端)
- MQTT实现消息推送
- Adnroid 消息推送 MQTT
- 消息推送之MQTT
- MQTT实现消息推送
- MQTT实现消息推送
- MQTT实现消息推送
- MQTT实现消息推送
- IBM MQTT消息推送
- MQTT实现消息推送
- 关于ROS的个人见解
- 关于指针的个人见解
- WEB开发,当只有一个input的时候按回车键时,input会默认提交表单
- 笔试之编写异常
- list 方法
- svn cleanup failed–previous operation has not finished 解决方法
- 利用redis + lua解决抢红包高并发的问题
- 关于mqtt不适合移动聊天消息推送的个人见解
- 使用maven创建web项目
- 表单增强与验证——更改输入框类型(显示密码)
- solution Of 1106. Lowest Price in Supply Chain (25)
- Form.serialize()递交到后台出现乱码问题
- 如何从uboot中推算路由器flash烧写地址
- 数据库错误org.hibernate.exception.SQLGrammarException:could not insert
- mac下使用xcode 添加SOIL
- css3写倒着跳动的音符