普通 HTTP 是请求/响应(request/response):客户端发问,服务器作答,结束。这对**实时(real-time)**功能(聊天、实时仪表盘、通知、协同编辑)很不合适,因为在这些场景中服务器需要在有新数据时随时推送。这些选项是绕开 HTTP 由客户端发起的模型的各种办法,沿着一条复杂度谱系排列:
Long-polling client ──req──▶ server ...holds... ──resp──▶ then immediately re-asks
(near-real-time over plain HTTP; one message per held request)
SSE client ──req──▶ server ═══stream of events═══▶ (one-way, server→client)
(HTTP-based, text, auto-reconnect; NO client→server on same channel)
WebSocket client ──handshake──▶ server ══full-duplex, both directions══▶
(persistent TCP; low overhead; binary or text; you build the rest)
是到处都能用的兜底方案:客户端发出一个普通请求,服务器把它挂起直到有数据,然后客户端立即再次请求。它在普通 HTTP 上近似实现了推送,但每条消息浪费一个请求周期并增加延迟。
