短轮询 (Short Polling)、长轮询 (Long Polling) 与 SSE

你需要从服务器向客户端发送数据。这里有三种实现方式。

短轮询 (Short Polling)

想象一下餐厅里的顾客。顾客每隔 5 秒就会问服务员菜好了没有。

顾客会定期重复这个问题。

问题:

  • 过多的请求会冲击你的服务器。
  • 更新会有延迟。如果菜在提问后 1 秒就准备好了,顾客还得再等 4 秒才能再次询问。
  • 这会浪费网络资源。

长轮询 (Long Polling)

顾客问服务员:“菜好了之后告诉我。”

服务员留在桌边等待。如果厨师做好了菜,服务员会立即告诉顾客。如果做菜时间过长,服务员会告诉顾客菜还没好。

问题:

  • 连接会长时间保持开启状态。
  • 你可能会遇到连接超时。
  • 很难同时管理大量顾客。

服务端推送事件 (SSE)

想象一下实时股票价格。客户端只需开启一次连接。服务器会保持该连接开启。每当价格发生变化时,服务器就会将更新发送给客户端。

关键点:

  • 这是一种单向通信。
  • 数据仅从服务器流向客户端。
  • 客户端不会通过该连接发送回消息。

来源:https://dev.to/guruharish_b/short-polling-long-polling-and-sse-20o5