2

我正在尝试在多个节点上设置 socketio 以实现它们之间的负载平衡。我在 socketio 文档中想出了类似的东西:Using multiple nodes

它非常适合在多个节点之间通过 redis 传递的事件,但问题是,例如,我有这种情况:

我使用负载平衡器 (nginx) 启动并运行服务器 A 和服务器 B

客户端 A 连接到服务器 A。

客户端 B 连接到服务器 B。

有什么方法可以确保服务器 A 关闭(节点断开连接,或因任何原因关闭)所有连接到服务器 A 的客户端都应该自动重定向到服务器 B 作为后备?socketio 支持吗?我必须做哪些手动配置才能确保发生这种情况?

我正在将 Express 与 nginx 一起使用。

4

1 回答 1

0

如果您的其中一个 socket.io 服务器在使用时脱机,它的客户端应该(最终)收到disconnect消息。您应该组织您的代码,以便您的disconnect事件处理程序可以通过您的负载平衡器建立新的连接。

我写了“最终”。服务器崩溃和客户端事件传递之间可能会经过几秒钟。您可能希望设置某种保活方案,让您的客户端偶尔发送一个“ping”事件,并期望您的服务器有一个提示的“pong”响应。然后,如果ping在分配的时间内没有回答 a,您的客户端可以重新连接,就像它收到一个disconnect事件一样。

如果您有移动客户端,您需要通过在 wifi 上启动会话来测试所有这些,然后将设备移出 wifi 范围,以便切换到无线。

于 2020-06-24T10:14:45.147 回答