簡體   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