WebSocket:HTML5开始提供的一种浏览器与服务器进行全双工通讯的网络技术,属于应用层协议。它基于TCP传输协议,并复用HTTP的握手通道。
优点:
1.支持双向通信,实时性更强;
2.更好的二进制支持;
3.较少的控制开销。连接创建后,ws客户端、服务端进行数据交换时,协议控制的数据包头部较小。在不包含头部的情况下,服务端到客户端的包头只有2~10字节(取决于数据包长度,
客户端到服务端的话,需要加上额外的4字节的掩码。而HTTP协议每次通信都需要携带完整的头部
4.支持扩展。ws协议定义了扩展,用户可以扩展协议,或者实现自定义的子协议。
如何建立连接:1.首先,客户端发起协议升级请求。采用的是标准的HTTP报文格式,且只支持GET方法。
1.Connection: Upgrade:表示要升级协议;
2.Upgrade: websocket:表示要升级到websocket协议;
3.Sec-WebSocket-Version: 13:表示websocket的版本。
4.Sec-WebSocket-Key:与后面服务端响应首部的Sec-WebSocket-Accept是配套的,提供基本的防护,比如恶意的连接,或者无意的连接。
连接保持、心跳:WebSocket为了保持客户端、服务端的实时双向通信,需要确保客户端、服务端之间的TCP通道保持连接没有断开。发送方-接收方:ping,接收方-发送方:pong