Distributed System-分布式系统 Long-Polling vs WebSockets vs Server-Sent Events 长连接

Distributed System 分布式系统 Long-Polling vs WebSockets vs Server-Sent Events 长连接

定义

Long-Polling 、 WebSockets 和 Server-Sent Events 是常用的在客户端和 Web 服务器之间的协议

HTTP Long-Polling

  1. 客户端发起 HTTP 请求
  2. 如果服务端没有新的数据,那么它不会直接返回空响应,而是保持(Hold)住这个请求,然后等新数据
  3. 一旦新数据生成,服务端会生成一个完整的响应回给客户端,回到步骤 1
  4. 如果超时没有响应,连接会关闭,回到步骤 1

DistributedSystem-LongPolling

WebSockets

通过一个单独的 TCP 连接提供全双工(Full Duplex)的通信频道

  1. 客户端通过 WebSocket 握手过程,发起一个 WebSocket 连接
  2. 如果连接成功,客户端和服务端可以随时互相发消息

DistributedSystem-WebSockets

Server-Sent Events(SSEs)

SSEs常用于服务端需要实时通知客户端、或者服务端在循环生成数据,并且需要发送多个事件给客户端

  1. 客户端发起一个持久的、长期的 HTTP 连接跟服务端
  2. 服务端使用这个连接来持续发送数据给客户端
  3. 客户端如果发数据给服务端,需要用其他的技术或者协议

DistributedSystem-SSEs