2012-11-29 67 views
3

我有一个websocket基础web应用程序,我经常犹豫要部署,因为部署将终止所有连接,迫使客户端重新连接。我目前没有内置的很好的离线同步功能,但我仍然不会依赖此功能。保持Websocket连接在depoys /崩溃期间活着的技巧

对于部署,我打算在查看hipache并在服务器更新时拉动服务器停止运行。这并不涉及其中一个服务器实例在其他服务器正在运行时出现故障的情况。

他们的任何成熟的技术是他们处理这个?

回答

0

您应该可以在客户端监听errorclose事件,并根据需要重新启动套接字。这会解决你的问题吗?

+0

我不关心重新启动套接字,但整个套接字服务器,特别是计划外的应用程序重新启动,你不能听。 –

+0

在我看来,如果服务器端出现计划外停机,'error'和'close'事件肯定会在客户端发出。那么,让客户端做稍微随机的指数退避尝试重新连接? – djc

0

您可以使用Kaazing以可扩展的方式部署socket.io。 Kaazing支持的集群可让您热插拔集群内外的网关。我们的一些客户配置集群双dmz来管理部署。这个设置的最好的部分是它允许客户端优雅地尝试连接到当前可用的连接路径来重新部署任何网关。这既安全又可扩展。

额外的好处是,如果你将socket.IO的传输切换到只是websocket,Kaazing也会照顾到仿真,并且在提供不依赖任何排序的仿真时比socket.io进一步的轮询和提供仿真甚至可以恢复到Internet Explorer 6的版本。

当谈到大批量生产时,最好采用稳健的方式来管理集群和负载平衡。

如果您决定尝试此操作,请确保更改socket.io传输以使用ws并在客户端的Kaazing库顶部运行它。在服务器端,你所需要做的就是代理到Node.JS的连接。可以编写额外的适配器来利用代理和socket.IO在每个网关后面实现更多负载平衡,以便多个节点可以在给定网关上循环连接。