WebSockets - 为什么握手HTTP?共享端口80

时间:2014-12-26 00:12:11

标签: http websocket port

我不清楚为什么WebSocket的握手是HTTP。 Wiki说“握手类似于HTTP,因此服务器可以处理HTTP连接以及同一端口上的WebSocket连接。”这有什么好处?一旦你开始通过WebSocket进行通信,你也使用端口80 ......那么为什么初始握手不能采用WebSocket格式?

另外,如何在端口80上同时监听WebSocket和HTTP服务器?或者它通常是与HTTP和WebSocket服务器相同的应用程序?

谢谢你们:)

1 个答案:

答案 0 :(得分:1)

WebSockets旨在与现有的Web基础架构完美配合。这就是为什么WS连接以HTTP形式启动然后切换到持久二进制连接的原因。

这样简化了部署。您不需要修改路由器的端口转发和服务器侦听端口...此外,因为它以HTTP身份启动,所以可以像普通HTTP请求一样进行负载平衡,防火墙更倾向于让连接通过,等等......最后但并非最不重要的是,HTTP握手还带有cookie,与AJAX一样,它与应用程序的其余部分集成非常棒。

传统的HTTP请求 - 响应和WS都可以在同一个端口中运行。基本上,WS客户端发送请求“Upgrade:websocket”的HTTP请求,然后如果服务器接受WS连接,则回复HTTP响应,指示“101 Switching Protocols”,从那时起连接保持打开状态,并且两端都将其视为二进制连接。