什麼是伺服器發送事件串流(SSE Streaming)?
伺服器發送事件串流(SSE Streaming)
定義
伺服器發送事件(Server-Sent Events, SSE) 是一種讓伺服器透過單向、持續的 HTTP 連線,主動將資料推送給瀏覽器(用戶端)的技術標準。它屬於 HTML5 規範的一部分。
核心特性
-
單向通訊:資料只能由伺服器流向用戶端(與雙向的 WebSocket 不同)。
-
基於 HTTP:使用標準的 HTTP 協定,不需要特殊的協定升級,防火牆相容性佳。
-
持續連線:建立連線後保持開啟,伺服器可在有新資料時隨時推送。
-
自動重連:連線中斷時,瀏覽器會自動嘗試重新連線(內建機制)。
-
文字格式:傳輸內容為 UTF-8 純文字,透過 text/event-stream 的 MIME 類型傳送。
運作方式
- 用戶端透過瀏覽器的
EventSource API 建立連線。
- 伺服器回應時維持連線開啟,並以特定格式(如
data: 開頭的行)分段送出事件資料。
- 每筆事件以空行分隔。
常見應用場景
- AI 聊天回應串流:如 ChatGPT 等逐字(token)即時顯示生成內容。
- 即時通知:新訊息、系統警示。
- 即時資料更新:股價、運動比分、監控儀表板。
與 WebSocket 的差異
| 項目 |
SSE |
WebSocket |
| 通訊方向 |
單向(伺服器→用戶端) |
雙向 |
| 協定 |
HTTP |
獨立協定(ws/wss) |
| 自動重連 |
內建 |
需自行實作 |
| 資料格式 |
文字 |
文字/二進位 |
參考資料
[developer.mozilla.org]https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events
[html.spec.whatwg.org]https://html.spec.whatwg.org/multipage/server-sent-events.html