短轮询 (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