我不清楚为什么WebSocket的握手是HTTP。Wiki说:"握手类似于HTTP,因此服务器可以在同一端口上处理HTTP连接和WebSocket连接。这样做有什么好处?一旦您开始通过 WebSocket 进行通信,您还将使用端口 80...那么为什么初始握手不能采用 WebSocket 格式呢?
另外,如何让 WebSocket 和 HTTP 服务器在端口 80 上侦听?或者它通常与HTTP和WebSocket服务器运行相同的应用程序?
谢谢你们:)
WebSocket 旨在与现有的 Web 基础架构几乎完美地协同工作。这就是为什么 WS 连接以 HTTP 开始,然后切换到持久二进制连接的原因。
这样就简化了部署。您无需修改路由器的端口转发和服务器侦听端口...此外,因为它以HTTP开始,所以它可以像普通HTTP请求一样进行负载平衡,因此防火墙更倾向于让连接通过等。等。。。最后但并非最不重要的一点是,HTTP握手还带有cookie,以与AJAX相同的方式与应用程序的其余部分集成非常有用。
传统的HTTP请求-响应和WS都可以在同一端口中运行。基本上,WS 客户端发送一个 HTTP 请求,要求 "Upgrade:websocket",然后如果服务器接受 WS 连接,则回复指示"101 交换协议"的 HTTP 响应,从那时起连接保持打开状态,两端都将其视为二进制连接。