android – 由于通过openfire连接丢失而丢失的消息

在移动设备上关闭互联网直接导致我的聊天应用程序出现问题.消息不存储在openfire离线表中,因为Openfire仍然显示我在线突然断开与服务器的连接.当重新登录尝试时,在该时间段内发送的消息将丢失.

我正在开发一个聊天应用程序,登录到openfire后我可以聊天,其他用户可以在网上看到我,但问题是如果一个用户丢失连接就像WIFI关闭,在这种情况下Openfire没有显示我的状态为离线和它仍然显示在线,导致消息包丢失.

请提供我无法解决的解决方案.

在旁注中whatsapp和其他应用程序如何发送消息.他们在服务器和确认上使用消息存储策略还是我在这里遗漏了一些东西.

解决方法

客户端和服务器都需要确认已发送消息和&交付,例如你发送消息给别人,你可以做的是你在服务器上保存此消息,从服务器将此消息发送到接收方并等待接收方确认消息已发送,一旦得到确认 – 从服务器删除该消息.

How whatsapp do it?我在Quora上找到了Michael Donohue的回答

Whatsapp适用于商店和转发,WhatsApp客户端将存储您发送的任何消息,并继续尝试将其发送到WhatsApp服务器.当WhatsApp移动应用程序连接到聊天服务器时,存储转发过程会在两个方向上进行.客户端将其mesage存储中的任何待处理消息发送到服务器,而服务器将发往该客户端的所有累积消息发送到客户端.此过程在确认基础上完成.这意味着重复发送消息,直到另一方确认收到消息.服务器在确认后会丢弃消息 – 没有长期存储.虽然客户端会在ack到达时更新UI以仔细检查状态,但会保留消息.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...