WebSocket 是一种基于TCP传输的新协议。它实现了浏览器与服务器的全双工通信,简单来说就是服务器和浏览器只需要进行一次握手,就可以持续的进行数据传输,并且是双向的数据传输。
HTTP协议和WebSocket协议的主要区别:
1.HTTP协议是短连接而WebSocket是长连接
HTTP的短连接是指的通信过程很短,只能进行一次请求一次响应;WebSocket的长连接是指它的通信过程是持久化的,正常情况下,不主动关闭连接或者关闭连接窗口,服务器和客户端的连接是可以一直持续下去的。
2. HTTP通信是单向半双工的,而WebSocket通信是全双工的
单项半双工指的是 通信只能是客户端向服务端发送请求,服务端针对请求做出对应的响应,而服务端不能主动向客户端发送请求;全双工是指服务端和客户端都能作为发送请求的一方,并且都能做响应的一方。
WebSocket的缺点:
1.服务器需要长时间维护连接,所需成本较HTTP比更高。
2.不是所有浏览器都能完全支持WebSocket
3.WebSocket是长连接,受限于网络,需要着重处理好连接中断后的重连
因此WebSocket并不能完全取代HTTP,它只适合在特定的场景下使用
WebSocket应用场景:
在线视频中的弹幕、网页窗口聊天、实时更新的网络信息等
WebSocket的具体实现可以参考一下两篇文章: