WebSocket,即Web浏览器与Web服务器之间全双工通信标准。
全双工:指的是不论客户端还是服务器端,任意一方都可以直接向对方发送报文。
由于是建立在HTTP基础上的协议,因此连接的发起方仍是客户端。一旦web服务器与客户端之间建立起WebSocket协议的通信连接,之后所有的通信都是依靠这个专用协议进行。
特点:
-
推送功能
支持服务器向客户端推送数据的推送功能,服务器可以直接发送数据,而不必等到客户端发起请求,而客户端就可实现实时更新。
-
减少通信量
只要建立起WebSocket连接,就可以一直保持连接的状态。和HTTP相比,不但每次连接时的总开销减少,由于WebSocket的首部信息很小,所以通信量也相应的减少了。
握手
请求:
为了实现WebSocket通信,需要用到HTTP的Upgrade首部字段,告知服务器通信协议发生改变,以达到握手的目的。
响应:
对于客户端的请求,服务端返回状态码101的响应
Set-WebSocket-Accept的字段值,是由请求报文中的Sec-WebSocket-Key字段值生成的。
当服务器完成这个响应之后,后面的通信将使用WebSocket协议进行通信。