2014-08-31 49 views
2

我的應用程序由兩部分組成:WebSocket服務器 - 託管在OpenShift DIY盒式磁帶上; WebSocket客戶端 - 從家用PC連接到我的服務器。 WebSocket服務器是使用嵌入式Jetty及其用於WebSocket的庫編寫的。客戶端使用JAVA和Tyrus庫編寫。除了我無法解釋的一個小故障外,它工作得很好。WebSocket連接OpenShift DIY盒式磁帶每2分鐘丟棄一次

在OpenShift DIY盒式磁帶上運行WebSocket服務器時,WebSocket連接每2分鐘就會中斷一次。連接丟失發生得相當準確,所以顯然它與潛在的網絡中斷無關。除此之外,我在Heroku上測試了完全相同的應用程序,並且沒有連接丟失。此外onClose(...)方法接收NORMAL_CLOSURE關閉代碼。

我幾乎可以肯定,OpenShift Apache層每2分鐘關閉空閒的WebSocket連接。即使WebSocket客戶端發送Ping消息並從服務器接收Pong消息。有沒有人經歷過這種類型的WebSocket連接丟失?是否有我可以用來防止連接丟失的參數?

預先感謝您。

更新:我在服務器端添加了一個專用線程向客戶端發送Pong消息(Jetty不支持Pong處理程序,所以我不能使用Ping消息)並且丟棄消失。看起來像OpenShift Apache層開始把連接視爲「活着」並且不關閉它。然後我注意到一個更奇怪的行爲:有人通過HTTPS每小時ping我的服務器端應用程序。 HTTP標頭是這樣的:
HTTP/1.1頭/
接受:/
的User-Agent:紅寶石
X轉發 - 協議:HTTPS
X - 轉發,主機:.. ..rhcloud.com
連接:保持活躍
X請求開始:T = 1409771442217677
X - 轉發,對於:10.158.21.225
主持人:wsproxy-gimes4dieni.rhcloud.com
X轉發端口:443
X-客戶端IP:10.158.21.225
X - 轉發,SSL客戶端證書:(空)
X轉發-Server:localhost

我不使用Ruby,我只使用HTTP,IP地址與我的常規請求不同。有人知道這是OpenShift的一種「服務」,它來自互聯網嗎?

+0

我遇到類似的問題。我在日誌中看到我的終端活得很好,併發送ping和pong。他們不會死。只要應用程序開始通信(在一段空閒時間後),其中一個端點將以1006的關閉代碼(「非正常關閉」)下降。 – 2014-12-12 10:58:01

回答

0

SSH到您的項目中,打開~/haproxy/conf/haproxy.cfg與作爲vi文本編輯器,並編輯timeout queuetimeout client,並且timeout server到任何你想要的。我將它設置爲5m,這是5分鐘。完成更改後,退出並運行

~/haproxy/bin/control restart 

現在應該設置websocket超時。