如何部署WebSocket服务器?

时间:2012-04-21 09:29:41

标签: deployment websocket

部署在传统Web服务器上运行的Web应用程序时,通常会在代码更新后重新启动Web服务器。由于HTTP的性质,这对用户来说不是问题。在下一个请求中,他们将获得最新的更新。

但是WebSocket服务器怎么样?如果我重新启动或终止旧进程,则所有连接的用户都将断开连接。所以我的问题是,你用什么样的策略顺利部署WebSocket服务器?

3 个答案:

答案 0 :(得分:1)

您说得对,如果服务器重新启动,每个连接的用户都将断开连接。

我认为不太糟糕的解决方案是告诉客户端重新连接客户端的onClose方法。

答案 1 :(得分:0)

如果客户端直接连接到执行所有套接字网络和应用程序逻辑的服务器,则是 - 由于TCP层保持连接,它们将断开连接。

如果您有客户端将要连接的网关,并且该网关应用程序正在另一台服务器上运行,但是会将消息通信并转发到逻辑服务器,那么逻辑服务器会将它们发回,网关将发送回客户端响应。使用此类基础结构,您必须在网关上实现数据包堆叠,直到它重新建立与逻辑服务器的连接。逻辑服务器可能会在重新启动之前通知网关服这样客户端就会有连接,它就不会收到任何响应。

或者您可以在客户端重新连接时实现。 使用HTTP,每次您离开时,浏览器实际上都在创建与服务器的套接字连接,传输所有数据并关闭它(在大多数情况下)。然后所有网站数据都是本地的,直到您离开。

使用WebSockets,它是连续的连接,并且没有重新连接请求。这就是为什么当WebSockets收到关闭事件时你必须实现简单的机制,你会尝试在客户端定期重新连接。

它更多地基于您的特定需求。

答案 2 :(得分:0)

WebSockets只是一种传输机制。像socket.io这样的库存在构建在该传输上 - 并提供心跳,浏览器回退,优雅的重新连接以及处理实时应用程序中发现的其他边缘情况。

在我们支持WebSocket的应用程序中,socket.io对于确保我们的持续部署设置不会破坏用户的活动套接字连接至关重要。