2016-10-05 71 views
-1

我們正在使用web套接字進行服務器和android應用之間的實時通信。但是這裏的主要問題是web套接字在幾個時間間隔內保持斷開連接,並且我們無法在雙方中設置套接字超時。有關此主題的問題有多少,但結果對我們沒有幫助。WebSocket不斷斷開幾個時間間隔

服務器:服務器我們使用.NET和樣品從https://github.com/paulbatum/WebSocket-Samples下所採取我們採取了AspNetChat文件夾,並開發socket服務器從

Android客戶端:將樣品從Java的WebSocket的-1.3服用。 0並且android中的代碼以這種方式編寫,如果套接字斷開連接,它將自動重新連接。

我們面臨的主要問題是經過一段時間間隔後說30分鐘服務器和客戶端之間的websocket連接不起作用。我們無法說,即使它斷開連接,但是當從android發送消息時,日誌說它已連接到服務器,並且服務器在onMessage函數中沒有收到消息。

如果有解決方案,這將是更有幫助,如果有任何其他替代協議,我們也可以檢查。

在此先感謝

+0

我欣賞那些給予否定的天才人士。但是,您可以告訴我這個問題出了什麼問題,或者如何解決問題。 –

+0

你的問題可能是低估的,因爲它的確很廣泛。許多事情會導致這種情況,如果你使用套接字,更多的技術數據往往是預期的。爲了關注,請查看庫是否返回密切的原因,Wireshark或mitmproxy告訴您的情況,如果更改網絡會發生什麼情況等。 –

+0

幾乎忘記了:Firefox和Chrome也可以使用內置調試器(或Firebug等插件)。 –

回答

2

經過長期的研究,我們發現,在服務器端的WebSocket的一些間隔產生錯誤(比如10分鐘的空閒時間),並在此空閒週期的onError()方法被調用的OnClose( ) 方法。在這個過程之後,服務器並沒有完全關閉套接字,而只是從內存中刪除。爲了解決這個問題,我們製作了一個保持活動的消息,即使應用程序和服務器都知道並且重新連接了套接字,也會發生任何錯誤,並且每隔一分鐘都會發送並確認。

結果:添加保活方法解決了我們的問題。