WebSocket是否使用初始HTTP用于握手的同一个TCP连接?

人气:559 发布:2022-10-16 标签: http node.js load-balancing websocket

问题描述

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

假设我有两个节点,客户端(例如,使用Socket.IO的浏览器)发送wss://请求,第一个节点从LB获取请求,然后它向客户端发送回‘HTTP/1.1 101 Web套接字协议握手’响应。

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

如果使用Socket.IO,在建立WebSocket连接以提高性能之前,它仍然可能会回退并实际通过http发送长轮询。这些轮询请求是否可以在不同的后端节点上结束?

推荐答案

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

是的,长轮询可能会被路由到不同的节点,除非专门设置为避免这样做(我不建议这样做,因为这标志着体系结构中的伸缩弱点)。

643