【发布时间】:2020-09-18 19:20:44
【问题描述】:
是否可以使用一个或多个常规 HTTP 请求/响应已使用的 TCP(或 TCP+TLS)连接来启动 WebSocket 连接,或者客户端是否必须为每个 WebSocket 连接启动一个新的 TCP 连接?
[在扩展 HTTP 客户端以支持建立 WebSockets 连接的上下文中询问。客户端维护一个keep-alive连接池,并想知道在建立WebSocket连接时是否可以使用池中的TCP连接。]
【问题讨论】:
是否可以使用一个或多个常规 HTTP 请求/响应已使用的 TCP(或 TCP+TLS)连接来启动 WebSocket 连接,或者客户端是否必须为每个 WebSocket 连接启动一个新的 TCP 连接?
[在扩展 HTTP 客户端以支持建立 WebSockets 连接的上下文中询问。客户端维护一个keep-alive连接池,并想知道在建立WebSocket连接时是否可以使用池中的TCP连接。]
【问题讨论】:
来自https://www.rfc-editor.org/rfc/rfc6455#section-4.1
一旦与服务器建立连接(包括通过代理或通过 TLS 加密隧道的连接),客户端必须向服务器发送打开握手。
语言向我暗示不应该有任何东西 [例如。打开连接和发送 WebSocket 打开握手之间的 HTTP 请求/响应]不符合规范。
所以不,来自先前 HTTP 请求/响应的活动连接不能用于 WebSocket。
【讨论】: