【问题标题】:Does Websocket use the same TCP connection that was used by the initial HTTP for the handshake?Websocket 是否使用初始 HTTP 用于握手的相同 TCP 连接?
【发布时间】:2019-04-22 07:25:22
【问题描述】:

我想建立一个 Node.js 服务集群,在它们前面有一个负载均衡器(由于某些原因不能有粘性会话)。

让我们想象一下我有两个节点,客户端(例如,浏览器,使用 socket.io)发送 wss:// 请求,第一个节点从 LB 获取它,然后它发送回客户端 'HTTP/1.1 101 Web Socket Protocol Handshake 响应。

  1. 之后客户端和服务器是否会使用与初始客户端请求相同的 TCP 连接来发送帧?或者会建立一个新的 TCP 连接,可能会被 LB 转发到第二个节点?

  2. 在使用 socket.io 的情况下,它可能仍会回退并在 WebSocket 连接建立之前通过 http 发送长轮询以提高性能。这些轮询请求是否可以在不同的后端节点上结束?

【问题讨论】:

    标签: node.js http websocket load-balancing


    【解决方案1】:
    1. 是的,WebSockets 使用与 HTTP 握手期间相同的 TCP/IP 连接。

    2. 是的,长轮询可能会路由到不同的节点,除非专门设置为避免这样做(我不建议这样做,因为它表明架构中存在扩展缺陷)。

      李>

    【讨论】:

      猜你喜欢
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-22
      相关资源
      最近更新 更多