繁体   English   中英

如何保持websocket连接活着?

[英]How to keep a websocket connection alive?

我有一个Android应用程序,即时通讯是关键功能之一。 为了实现IM功能,我们使用基于websocket推送服务器。

对于我的应用程序,我有一个PushService,在这个服务中,我建立了一个websocket连接,它连接到推送服务器并接收推送消息。

当应用程序在前台时(即:在用户使用应用程序时运行良好),代码效果很好,但是当应用程序不在前台时,它会在一段时间后停止接收推送消息(大约1分钟)。 用户关闭屏幕时出现同样的问题。

我已经使用AlarmManager设置了一个重复任务,它检查websocket连接状态,如果它没有处于连接状态,则重新尝试连接以恢复正常以接收推送消息。

这在Android M下运行良好,例如在Android 5手机上,它很少会错过推送消息。 但是在Android M / Android N上,它的效果不如Android 5.x。 我可以确认服务本身是否继续运行,请查看“正在运行的服务”。

我注意到从Android M开始,Android引入了Doze和Standby模式,不确定它们是否相关,如果是,我该如何让应用程序继续工作? 在我的手机上,微信和Skype Android应用程序运行良好,它背后的机制是什么? 我知道FCM是最好的解决方案,但我不能将它用于中国的客户,所以我需要一个解决方法。

编辑:我曾建议使用前台服务,但PM不喜欢通知托盘始终显示在状态栏中,他希望保持清洁。

任何建议将被认真考虑!

我不知道微信或Skype通讯,但我知道WhatsApp使用你自己的服务通知与FCM相同的技术。 他们使用Jaber服务器实现XMPP通信协议

链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM