WebSocket是互联网使用的通信协议之一,可在Web服务器与客户端之间实现双向通信。互联网工程任务组(IETF)在“RFC 6455”中定义了该协议。

Web最初旨在支持超文本,但此后逐渐发展为支持更具动态性的Web应用程序。实现这一目标的一种常用技术是AJAX(异步JavaScript和XML)。该技术使用XMLHttpRequest与Web服务器进行细粒度数据交换,而不是更新整个页面,从而提升用户体验的响应速度。但是,使用AJAX时,所有数据交换都必须由客户端发起,因此Web服务器难以主动向客户端推送数据。

为解决这一局限,Comet作为AJAX的扩展应运而生。Comet通过“有意创建延迟响应的请求”来保持与Web服务器的HTTP连接处于打开状态,使服务器能够在需要推送信息时随时发送响应。不过,Comet存在资源消耗较高的问题。

WebSocket是在Comet基础上改进而来的,可在HTML5中使用。它会保持服务器与客户端之间的连接处于打开状态,从而通过该连接实现持续的双向通信。目前,主流浏览器均支持WebSocket。

WebSocket连接通过HTTP建立,并使用HTTP“Upgrade”标头字段将连接升级为WebSocket。请注意,如果网站使用不支持WebSocket的HTTP代理,连接或通信可能会失败,因此需要进行适当配置。