我有一个基于 websocket 的 web 应用程序,我经常犹豫部署它,因为部署会杀死所有连接,迫使客户端重新连接。我目前没有内置好的离线同步功能,但我仍然宁愿不依赖它。
对于部署,我计划查看hipache并在服务器更新时将其拉出轮换。这不处理其中一个服务器实例崩溃而其他服务器实例仍在运行的情况。
他们是否有任何经过验证的技术可以解决这个问题?
我有一个基于 websocket 的 web 应用程序,我经常犹豫部署它,因为部署会杀死所有连接,迫使客户端重新连接。我目前没有内置好的离线同步功能,但我仍然宁愿不依赖它。
对于部署,我计划查看hipache并在服务器更新时将其拉出轮换。这不处理其中一个服务器实例崩溃而其他服务器实例仍在运行的情况。
他们是否有任何经过验证的技术可以解决这个问题?
您应该能够在客户端侦听error
或事件并根据需要重新启动套接字。close
这能解决你的问题吗?
您可以使用 Kaazing 以可扩展的方式部署 socket.io。Kaazing 支持的集群允许您将网关热交换进出集群。我们的一些客户配置集群双 dmz 来管理部署。此设置的最佳部分是它允许重新部署任何网关,客户端优雅地尝试连接到当前可用的连接路径。这既安全又非常可扩展。
额外的好处是,如果您将 socket.IO 的传输切换为仅 websocket,Kaazing 也会负责仿真,在提供不依赖任何轮询的仿真方面比 socket.io 走得更远,并提供一直模拟到 Internet Explorer 版本 6。
当涉及到大批量生产时,最好以稳健的方式处理集群和负载平衡。
如果您决定尝试一下,请确保将 socket.io 传输更改为使用 ws 并在客户端的 Kaazing 库之上运行它。在服务器端,您需要做的就是代理到 Node.JS 的连接。可以编写额外的适配器来利用代理和 socket.IO 在每个网关后面获得更多的负载平衡,因此多个节点可以在给定网关上循环连接。