Websocket是否使用与初始HTTP握手相同的TCP连接?

时间:2018-11-19 21:41:37

标签: node.js http websocket load-balancing

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

让我们想象一下,我有两个节点,并且客户端(例如,浏览器,使用socket.io)向客户端发送wss://请求,第一个节点从LB获取该请求,然后将其发送回客户端'HTTP / 1.1 101 Web套接字协议握手”响应。

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

  2. 在使用socket.io的情况下,它可能仍会回退,并实际上会在建立WebSocket连接以提高性能之前通过http发送长时间的轮询。那些轮询请求可以最终在不同的后端节点上吗?

1 个答案:

答案 0 :(得分:1)

  1. 是的,WebSocket使用与HTTP握手期间相同的TCP / IP连接。

  2. 是的,除非特别设置以避免长时间轮询,否则长轮询可能会路由到不同的节点(我不建议这样做,因为这表明体系结构存在伸缩性缺陷)。