有HTTP了为什么还要WebSocket
TCP连接的两端,同一时间,双方都可以互相主动发送消息。这种就是所谓的全双工
而早期的HTTP/1.1,同一时间下客户端和服务端就只能一方发送数据,也就是基于TCP的HTTP协议把全双工给干废了,完成了半双工
这个主要是因为早期HTTP设计的时候,考虑的是看看网页文本的场景,能做到客户端发起请求再由服务器响应,就够了。而对于后面页游的出现,就需要这种客户端和服务端能互相发送大量消息的需求
所以为了支持这种场景,我们就需要另外一个基于TCP的协议
于是新的应用层协议websocket就被设计出来了。
浏览器在TCP三次握手建立连接后,都统一使用HTTP协议进行一次通信
如果此时是普通的HTTP请求,就还是老样子
如果想走websocket协议,就会在HTTP带上一些特殊的header,如果服务器正好支持升级为websocket,那就会走websocket握手流程
HTTP2,3均未实现 全双工通信