在互联网上搜索了很多内容之后,我们得出了一个结论,以确保持久与 XMPP 服务器的连接,我们必须创建服务,
我们创建了一个使用Smack库与 XMPP 服务器连接的服务器,它可以与移动和Wi-Fi网络一起使用。
每次你做出一些设计方法总是很重要!!!,Smack已经隐藏地实现了这个重新连接机制,在那里监听连接,如果连接丢失,Smack尝试重新连接 XMPP 服务器一段时间。
我们的用例场景::
INTERNET连接可以是因为wifi或数据网络,这里如果连接转是空闲状态有人关闭屏幕cpu进入睡眠现在任何数据都发送到服务器上这个连接将没有响应因为服务器不再听取客户端,在客户端 XMPP 连接已连接模式连接侦听器未检测到与服务器的任何断开连接,因此此处流程已完成。
在INTERNET上搜索后,我们发现解决这个问题的可能解决办法是在修复后ping服务器(我们使用1分钟作为修复周期),检测到ping失败后,我们实现了与smack相同的重新连接机制(想法取自通过利用计时器任务来重新连接机制本身。
问题::我们唯一的问题是电池耗尽,如果用户仍与INTERNET连接并且重新连接间隔增加,则会导致电池耗尽。
1)。上述问题的可能解决方案是什么?
2)。我们应该采取另一种方法吗?
答案 0 :(得分:6)
如何在Android中创建服务,使其保持持久的Xmpp连接 使用XMPP服务器?
两件事
关于
的备注使用1分钟作为Ping间隔是很多!正如您所经历的那样,它会非常快地耗尽电池电量。合理的ping间隔是> 15分钟,我建议30分钟。 Smack 4.1还将确保只有在没有收到带有Ping间隔的节的情况下才会发送ping。
尽可能使用XEP-0198:流管理。
我建议您查看遵循这些指南的各种开源应用,并在不消耗用户电池的情况下实现稳定,永久的连接 1 。
1:遵循这些建议不能保证电池耗尽。还有更多因素需要考虑。