Skip to content
ADP
API Design PrincipleBETA

[ADP-372] 伺服器發送訊息

概述

在某些情況下,HTTP 應用程式需要伺服器提供持續或即時的資訊,而不是依賴傳統的請求-回應模式。

指導方針

  • API 提供者應(SHOULD)根據具體需求在 WebSocket 和伺服器發送事件 (SSE) 之間進行選擇。
  • 當不需要雙向通信或高並發時,應(SHOULD)使用伺服器發送事件 (SSE)。
  • 對於需要高並發或全雙工通信的場景,應(SHOULD)使用 WebSocket。

實現選項

實現伺服器發送訊息有幾種方法:

  1. 伺服器發送事件 (SSE): 用於從伺服器到客戶端的單向、即時數據流。
  2. WebSocket: 用於伺服器和客戶端之間的全雙工、即時通信。
  3. 輪詢: 簡單但可能效率低下的方法,客戶端定期請求數據。
  4. 長輪詢: 通過保持連接開啟直到有新數據可用,相比常規輪詢減少延遲。
  5. HTTP/2 伺服器推送: 允許伺服器在客戶端請求之前主動發送回應。
  6. GraphQL 訂閱: 在 GraphQL 環境中實現即時更新。
  7. 消息佇列: 適用於解耦架構,利用 RabbitMQ 或 Kafka 等系統。

關聯 ADPs