【发布时间】:2021-10-08 13:33:28
【问题描述】:
我想知道当WebSocket调用从浏览器到apache http服务器到后端web服务时,创建了多少个TCP连接?
它是否创建了从浏览器到 apache http 服务器以及从 apache 到 Web 服务的单独 TCP 连接?
【问题讨论】:
标签: apache websocket java-websocket
我想知道当WebSocket调用从浏览器到apache http服务器到后端web服务时,创建了多少个TCP连接?
它是否创建了从浏览器到 apache http 服务器以及从 apache 到 Web 服务的单独 TCP 连接?
【问题讨论】:
标签: apache websocket java-websocket
当 Apache 代理 websockets 时,客户端和 Apache 之间有 1 个 TCP 连接,Apache 和后端之间有 1 个 TCP 连接。
Apache 监视两个连接的活动并将读取从一个转发到另一个。
这是它可以在第 7 层(应用层,HTTP)代理中的唯一方式。在低得多的层建立隧道,例如 NAT 设备或 MAC 转发 IP 喷射器,可以建立单个连接 - 但不是基于堆栈中更高层的任何东西,例如标头。
第二个连接可以通过 netstat 观察到。
第二个连接在 mod_proxy_wstunnel 调用 ap_proxy_connect_to_backend() 时打开,ap_proxy_connect_to_backend() 又调用 apr_socket_create(),apr_socket_create() 又调用可移植 socket() 例程。当 mod_proxy_http 的最新版本自动处理此隧道时,类似的流程会通过 ap_proxy_acquire_connection。
【讨论】: