2012-04-21 131 views
0

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

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

回答

1

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

我认为较不好的解决方案是告诉客户端重新连接在onClose客户端的方法。

0

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

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

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

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

它更基于您的具体需求。

0

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

在我们支持WebSocket的应用程序中,socket.io是确保持续部署设置不会中断用户活动套接字连接的核心。