在互聯網上搜索了很多之後,我們爲了確保堅持連接與XMPP服務器,我們必須創建一個服務來得到一個結論,如何在Android中創建服務與XMPP服務器保持Xmpp連接?
我們已經創建了一個它使用的Smack庫與連接XMPP服務器,它與移動和Wi - Fi網絡正常工作。
你想讓它的設計方法總是事!每一次,啪有這種重聯機制已經在那裏庫隱含實現這聽的連接,如果連接斷開啪嘗試一些時間間隔與XMPP服務器重新連接。
我們的使用情形::
互聯網連接可能是因爲WiFi或數據網絡,在這裏如果連接走的是一個人的空閒狀態關閉屏幕CPU進入睡眠狀態,此時任何的數據發送到服務器此連接上有將沒有響應,因爲服務器不再監聽客戶端,在客戶端XMPP連接已處於連接模式連接監聽器未檢測到與服務器的任何斷開連接,因此此處流程完成。
在INTERNET上搜索後,我們發現解決這個問題的可能的解決方案是在修復後(我們使用1分鐘作爲修復期)ping服務器,在檢測到ping失敗後,我們實現了與smack相同的重新連接機制來自Smack重新連接機制本身)通過使用計時器任務。
問題::我們的唯一問題是電池耗盡,如果用戶仍然與INTERNET連接並且重新連接間隔時間增加,則會消耗電池電量。
1)。上述問題的可能解決方案是什麼? 2)。我們是否應該採取另一種方法?
謝謝你的流程,我總是發現你的答案有所不同,因爲我們使用的是ejabberd 2.1.11 XEP-0198不包含在其中,是的,因爲你建議我將ping間隔增加到15分鐘電池耗盡問題幾乎得到解決,但我現在已經和數據網絡連接問題妥協了,由於客戶端已經掛斷了連接(因爲數據網絡很慢),服務器不知道[我們已經在1分鐘的時間間隔內設置了服務器ping,如果服務器在32秒後發現沒有回覆它殺死連接]在這裏,我們有1分鐘的黑暗窗口,其中的消息正在丟失 – Dev 2014-10-01 08:00:35
你可以建議我任何解決方案嗎?在這裏,我們要確保沒有聊天消息丟失! – Dev 2014-10-01 08:00:52