[ADP-372] 伺服器發送訊息
概述
在某些情況下,HTTP 應用程式需要伺服器提供持續或即時的資訊,而不是依賴傳統的請求-回應模式。
指導方針
- API 提供者應(SHOULD)根據具體需求在 WebSocket 和伺服器發送事件 (SSE) 之間進行選擇。
- 當不需要雙向通信或高並發時,應(SHOULD)使用伺服器發送事件 (SSE)。
- 對於需要高並發或全雙工通信的場景,應(SHOULD)使用 WebSocket。
實現選項
實現伺服器發送訊息有幾種方法:
- 伺服器發送事件 (SSE): 用於從伺服器到客戶端的單向、即時數據流。
- WebSocket: 用於伺服器和客戶端之間的全雙工、即時通信。
- 輪詢: 簡單但可能效率低下的方法,客戶端定期請求數據。
- 長輪詢: 通過保持連接開啟直到有新數據可用,相比常規輪詢減少延遲。
- HTTP/2 伺服器推送: 允許伺服器在客戶端請求之前主動發送回應。
- GraphQL 訂閱: 在 GraphQL 環境中實現即時更新。
- 消息佇列: 適用於解耦架構,利用 RabbitMQ 或 Kafka 等系統。