WebSocket简介
背景
传统的网络很大程度上是基于http的请求/响应模式而构建的。客户端加载一个页面后,需要用户做交互操作,发送请求给服务器,服务器才会做出反应,这样服务器有更新信息时就无法主动的将数据发送给客户端。因此需要用户互动或定期轮询,以便服务器将数据更新给客户端。
已有解决办法-轮询
1.在特定的时间间隔由浏览器发出HTTP request, 使服务器端将最新的数据返回给浏览器。它的缺点是浏览器需要不停地给服务器发出请求,但是HTTP request的header非常长,里面包含的有效数据却很有可能非常短,造成了带宽和服务器资源的浪费。
2.较新的轮训Comet中,普遍使用了持久连接,这也会大量消耗服务器带宽和资源。
HTTP 持久连接(HTTP persistent connection, HTTP keep-alive, HTTP connection reuse)是使用同一个tcp连接来发送和接收多个HTTP请求/响应,而不是为每一个新的请求/响应打开新的连接的方法。但是依然需要HTTP的开销,者同样会大量消耗服务器带宽和资源。
WebSocket
HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽并达到实时通讯。
"握手协议":在实现websocket的连线过程中,需要通过浏览器发出websocket连线请求,然后服务器发出回应,这个过程称为"握手"。之后,客户端和服务器之间存在持久地连接,而且双方可以随时开始发送数据。
优点:header小,服务器与客户端之间交换的数据包档头很小,不占用带宽。
服务器推送,服务器可以主动推送数据给客户端,达到实时更新的目的。