什麼是伺服器發送事件串流(SSE Streaming)?
伺服器發送事件串流(SSE Streaming)
基本定義
Server-Sent Events(SSE) 是一種讓伺服器能夠透過單一 HTTP 連線,「持續、單向」地將資料主動推送給瀏覽器(用戶端)的網頁技術標準。
主要特性
-
單向通訊
- 資料只從「伺服器 → 用戶端」流動
- 與 WebSocket(雙向)不同
-
基於 HTTP
- 使用一般的 HTTP 協定,不需額外協定
- 回應的 MIME 類型為
text/event-stream
-
自動重連
- 連線中斷時,瀏覽器會自動嘗試重新連線
- 可透過
Last-Event-ID 機制續傳
-
純文字格式
- 訊息以純文字傳送,格式簡單(如
data: 開頭)
運作方式
- 用戶端透過 JavaScript 的
EventSource API 建立連線
- 伺服器保持連線開啟,持續傳送事件資料
- 用戶端透過事件監聽器接收並處理即時資料
常見應用場景
- 即時通知(如訊息提醒)
- 股價、儀表板即時更新
- AI 聊天串流回覆(如逐字顯示生成內容)
- 社群動態、體育賽事即時更新
與其他技術比較
| 技術 |
通訊方向 |
協定 |
| SSE |
單向(伺服器→用戶端) |
HTTP |
| WebSocket |
雙向 |
WS/WSS |
| 輪詢(Polling) |
用戶端反覆請求 |
HTTP |
補充說明
SSE 特別適合「只需伺服器主動推送」的場景,實作相對簡單。近年許多 AI 服務(如串流式對話回應)常使用 SSE 來實現逐字輸出的效果。
參考資料