openfire服务器端增加消息回执,解决openfire丢包问题
2014-12-01 16:00
721 查看
背景
我们都知道openfire丢包是比较严重的,要做即时通讯,肯定无法容忍这样的事情。为何会丢包?本人站在巨人的肩膀上,总结有两种情况:1)客户端A发送消息到客户端B,消息经过服务器,由服务器转发给客户端B,如果客户端B不在线了,此消息则无法发送到客户端B。openfire不是有离线消息机制吗?
对,但是,用户由在线状态到离线状态大致有两种情况:
第一种情况没有问题:由用户主动发起一个下线请求(一个presence报文),服务器接收到此报文,将用户状态置为离线状态
第二种情况问题就来了:用户由于网络原因,连接断开了。这时服务器如何知道用户下线了呢?服务器肯定是没法立即知道用户已经下线了的。服务器有一个心跳检查,
如下图设置。如果一段时间之后,任然接收不到用户的响应,则释放连接使用户下线。也就是说,从用户网络断开连接,到服务器检查迫使用户下线这段时间,服务器
认为用户是在线的,这段时间发送给此用户的消息并不会走离线消息。这段时间的消息就丢包了。
参考:/article/8282488.html
2)客户端A发送消息到客户端B,发送时由于A的网络状态不稳定,导致消息并没有发送成功。(本人是服务端的开发,不慎了解客户端的具体情况,现实情况是我们的android和ios工程师均没法判断消息发送失败了),此消息客户端B是无法接收到的。对用我们的应用用户来说,他只知道我的消息发出去,但对方没收到,丢包啦!!
问题1:修改openfire离线消息机制
参考:/article/9138711.html问题2:增加消息回执
相关文章推荐
- openfire smack消息回执设置,处理掉包问题
- 用Runtime中转发消息的方式解决服务器端返回NSNULL的问题
- 解决Openfire在使用mysql时的离线消息、昵称、备注等乱码问题
- 在服务器端的nginx.conf中配置增加配置,解决前端跨域问题
- openfire smack消息回执设置,处理掉包问题
- native2ascii 编码转换 解决消息资源(properties)等乱码问题
- 计算机小技巧集锦 (增加你计算机的安全系数以及一些问题的解决方法)
- 基于消息分发的多线程程序设计,常见的问题,以及解决方法
- 给网站增加解压缩功能,解决上传速度慢或者不支持FTP的问题(要求支持asp.net和SharpZip)
- 客户端改变状态,服务器服务器端读不到数据的问题,大家有什么好的解决方法.
- 实现datagrid的foot中增加一个新增数据行,以解决datagrid不能新增数据的问题
- 利用增加controler解决struts的中文问题
- "数据源不支持服务器端的数据分页"的问题解决
- 服务器端控件 Repeater 通过URL重写 解决搜索引擎问题
- 关于WM_NOTIFY与消息反射————耗费我两天时间才解决的问题
- 在消息响应函数中立即处理PENDING WM_PAINT解决刷新问题
- 用控件的方式解决问题-在客户端关联服务器端WEB控件引用
- VC串口控件编程,解决内存不断增加的问题
- VC串口控件编程,解决内存不断增加的问题
- 解决关于页面空间disable之后服务器端取值问题