Html5提供了WebSocket来支持浏览器与服务器的全双工通讯。
WebSocket在TCP之上定义了帧协议,从而能够支持双向的通信。由于WebSocket本质上是一个基于TCP的协议,在建立WebSocket连接前,浏览器或者其他客户端需要向服务器发起请求,服务器解析请求后产生应答信息返回给客户端,由此客户端与服务器的WebSocket连接建立成功。客户端和服务器都可以通过这条连接主动传递信息,直至某一方主动关闭连接。
WebSocket的握手过程主要有一下两个步骤:
1. WebSocket客户端首先发起一个连接请求。请求数据中包括服务器的IP和端口、以及客户端随机生成的Key等。
2. 服务器端根据客户端的key生成密钥,并将密钥返回给客户端,握手成功。
由于WebSocket的连接本质是一个TCP连接,所以与传统的浏览器轮询方式比,这种方式对于数据传输的稳定性和数据量大小方面都有一定的优势。而很多实验也证明在流量比较大的情况下,使用WebSocket也具有很大的性能优势。