WebSocket 跟 HTTP 一样,是一种建立在 TCP 协议之上的网络传输协议,可在单个 TCP 连接上进行双向通信,就是既可以由客户端发起查询,也可以由服务器发送推送。相对于 HTTP 协议只能由客户端发起单向查询,服务器返回信息这种称之为轮询,WebSocket 协议显得更加有优势。

Websocket 产生背景

在早期的互联网,很多网站为了实现推送技术,所用的技术都是轮询。轮询是指由浏览器每隔一段时间(如每秒)向服务器发出 HTTP 请求,然后服务器返回最新的数据给客户端。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而 HTTP 请求与回复可能会包含较长的头部,其中真正有效的数据可能只是很小的一部分,所以这样会消耗很多带宽资源。

比较新的轮询技术是 Comet。这种技术虽然可以实现双向通信,但仍然需要反复发出请求。而且在 Comet 中普遍采用的 HTTP 长连接也会消耗服务器资源。

在这种情况下,HTML5 定义了 WebSocket 协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。

Websocket 使用 wswss 的统一资源标志符(URI),其中 wss 表示使用了 TLS 的 Websocket,代表协议是加密的。如:

ws://example.com/wsapi
wss://secure.example.com/wsapi

Websocket 与 HTTP 和 HTTPS 使用相同的 TCP 端口,可以绕过大多数防火墙的限制。默认情况下,Websocket 协议使用 80 端口;运行在 TLS 之上时,默认使用 443 端口。

Websocket 优点介绍

  • 建立在 TCP 协议之上,服务器端的实现比较容易。
  • 与 HTTP 协议有着良好的兼容性,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。
  • 数据格式比较轻量,性能开销小,通信高效。
  • 可以发送文本,也可以发送二进制数据。
  • 没有同源限制,客户端可以与任意服务器通信。

5/5 - (1 vote)