【问题标题】:Socket.io / Express with load balancers servers带有负载平衡器服务器的 Socket.io / Express
【发布时间】:2021-05-11 14:00:21
【问题描述】:

我正在 Express 服务器上进行 socket.io 集成,前端(React)连接到服务器。

为避免请求过载,负载平衡器已配置为中介,然后才到达部署 Express 服务器的服务器。

我的问题是,前端能否连接到 Express 服务器/socket.io,哪个流通过负载均衡器?我读到的是传输模式应该是“websockets”而不是“polling”。

非常感谢您的建议。

【问题讨论】:

  • 如果您强制使用 webSocket 传输,因此 socket.io 最初不会以轮询模式启动(就像通常那样),并且如果负载平衡器支持 webSocket 连接,那么一切都应该工作。使用负载平衡器进行轮询的另一种方法是使负载平衡器具有粘性,以便给定客户端每次都负载平衡到同一台服务器。
  • @jfriend00,谢谢你的回复!

标签: reactjs express socket.io load-balancing


【解决方案1】:

如果您强制使用 webSocket 传输,因此 socket.io 最初不会以轮询模式启动(就像通常那样),并且如果负载平衡器支持 webSocket 连接,那么一切都应该工作。使用负载平衡器进行轮询的另一种方法是使负载平衡器具有粘性,以便给定的客户端每次都负载平衡到同一台服务器。

请注意,如果您的应用有理由希望客户端保持在同一个负载平衡服务器上(例如假设它暂时断开连接然后自动重新连接),那么您可能希望将负载平衡器配置为粘性。如果这无关紧要,那么最初只强制 websocket 传输就足够了。

仅供参考,这是强制 socket.io 客户端从 webSocket 连接开始的方法:

const socket = io({transports: ["websocket"]});

【讨论】:

    猜你喜欢
    • 2014-04-02
    • 1970-01-01
    • 2014-12-18
    • 2020-12-31
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多