Distributed System 分布式系统 Long-Polling vs WebSockets vs Server-Sent Events 长连接
定义
Long-Polling 、 WebSockets 和 Server-Sent Events 是常用的在客户端和 Web 服务器之间的协议
HTTP Long-Polling
- 客户端发起 HTTP 请求
- 如果服务端没有新的数据,那么它不会直接返回空响应,而是保持(Hold)住这个请求,然后等新数据
- 一旦新数据生成,服务端会生成一个完整的响应回给客户端,回到步骤 1
- 如果超时没有响应,连接会关闭,回到步骤 1
WebSockets
通过一个单独的 TCP 连接提供全双工(Full Duplex)的通信频道
- 客户端通过 WebSocket 握手过程,发起一个 WebSocket 连接
- 如果连接成功,客户端和服务端可以随时互相发消息
Server-Sent Events(SSEs)
SSEs常用于服务端需要实时通知客户端、或者服务端在循环生成数据,并且需要发送多个事件给客户端
- 客户端发起一个持久的、长期的 HTTP 连接跟服务端
- 服务端使用这个连接来持续发送数据给客户端
- 客户端如果发数据给服务端,需要用其他的技术或者协议