2012-04-21 102 views
0

部署運行在傳統Web服務器上的Web應用程序時,通常在代碼更新後重新啓動Web服務器。由於HTTP的性質,這對用戶來說不是問題。在下一個請求中,他們將獲得最新的更新。如何部署WebSocket服務器?

但是,WebSocket服務器呢?如果我重新啓動或終止舊進程,所有連接的用戶將斷開連接。所以我的問題是,你用什麼樣的策略來順利部署WebSocket服務器?

回答

1

說得對,如果服務器重新啓動,每個連接的用戶都會斷開連接。

我認爲較不好的解決方案是告訴客戶端重新連接在onClose客戶端的方法。

0

如果客戶端直接連接到執行所有套接字聯網和應用程序邏輯的服務器,那麼是的 - 由於保持連接的TCP層,它們將斷開連接。

如果您有客戶端將要連接到的網關,並且該網關應用程序正在另一臺服務器上運行,但將通信並將消息轉發給邏輯服務器,則邏輯服務器將發回它們,並且網關將發送回客戶端響應。有了這樣的基礎設施,您必須在網關上實施數據包堆疊,直到它將重新建立與邏輯服務器的連接。邏輯服務器可能會在重新啓動之前通知網關服這樣客戶端將有連接,它將不會收到任何迴應。

或者你可以在客戶端重新連接。 使用HTTP,每次瀏覽時,瀏覽器實際上都在創建與服務器的套接字連接,傳輸所有數據並關閉它(在大多數情況下)。然後所有的網站數據都是本地的,直到你離開。

使用WebSockets它是連續的連接,並且沒有重新連接請求。這就是爲什麼當WebSockets得到關閉事件時你必須實現簡單的機制,你將嘗試在客戶端定期重新連接。

它更基於您的具體需求。

0

WebSockets只是一個傳輸機制。像socket.io這樣的庫可以構建在該傳輸上 - 並提供檢測信號,瀏覽器回退,優雅重新連接以及處理實時應用程序中發現的其他邊緣情況。

在我們支持WebSocket的應用程序中,socket.io是確保持續部署設置不會中斷用戶活動套接字連接的核心。