1.WebSocket是什么?和HTTP的区别?
WebSocket是一种基于TCP连接的全双工通信协议,客户端和服务器仅需要一次握手,两者之间就可以创建持久性的连接,并且支持双向数据的传输。WebSocket和HTTP都是基于TCP的应用层协议,都可以在网络中传输数据。它们的区别如下:
-
WebSocket是一种双向实时通信协议,而HTTP是一种单项通信协议。HTTP协议下的通信只能由客户端发起,而WebSocket协议可以由客户端和服务器端发起。
-
WebSocket使用ws://或者wss://作为前缀。
-
WebSocket通信的数据格式比较轻量,网络开销小。
2.WebSocket的工作流程是什么?
-
客户端向服务器发送一个HTTP请求,请求头中包含特殊字段,表示要求升级协议为WebSocket。
-
服务端收到这个请求后,如果支持WebSocket协议,会进行升级协议的操作,在响应体中包含特殊字段,表示协议成功升级。
-
客户端和服务器端之间建立了一个WebSocket连接,建立 WebSocket 连接之后,通过心跳机制来保持 WebSocket 连接的稳定性和活跃性。可以进行双向数据的传输,数据以帧的形式传送,每条消息会被切分为多个帧发送給接收端,接收端接收到帧后,进行重组装成完整的消息。
-
客户端或服务器端若想断开连接,由一方发送一个关闭帧,另一方收到后,回复一个关闭帧,之后双方关闭TCP连接。