2016-02-11 74 views
1


我在java中每秒向javascript websocket客戶端發送少量消息(5-10)的websocket,然後使用角度ui-grid顯示。Websocket在一段時間後停止接收數據(20-30分鐘)

問題是,20-30分鐘後,瀏覽器(IE,Firefox,Chrome)停止接收消息。

  • 可能是什麼問題?
  • javax.websocket.Session的默認會話超時值是什麼?
  • 我應該檢查什麼設置/值,例如: getMaxTextMessageBufferSize()
+0

發送消息的C++應用程序運行在包含java websocket的單獨服務器和java應用程序服務器上,並運行在單獨的服務器上。當客戶端(瀏覽器)從同一臺服務器(java/tomcat)運行時,沒有問題。但是如果瀏覽器運行在不同的機器上,問題就會出現,java websocket會話將被NORMAL_CLOSURE關閉。這個問題似乎是數據包丟失。請編輯問題以添加此信息 – yogi

回答

0

問題出在通信鏈路(導線連通性)。我通過重新連接到websocket.onclose(客戶端JavaScript代碼)上的websocket解決了該問題。 websocket會話關閉時調用onclose。我通過在onclose中調用connect()函數來重新連接。

這個答案也有很大幫助。 AngularJS: Reconnect WebSocket inside a service

0

查看是否getMaxIdleTimeout()/ setMaxIdleTimeout()是你在找什麼。

從上setMaxIdleTimeout的javax.websocket.Session文檔():

此會話之前,設置非零的毫秒數將由容器被關閉,如果它是不活動的,即沒有消息要麼是發送或接收。值爲0或負值表示會話永遠不會由於不活動而超時。

+0

這可能不是必需的,因爲會話永遠不會空閒,每秒發送的消息很少。無論如何,現在我將setMaxIdleTimeout設置爲零。 – yogi

相關問題