共用方式為


設定伺服器傳送事件的 API

適用於:開發人員 |基本 |基本 v2 |標準 |標準 v2 |進階版

本文提供在 API 管理中設定 API 以實作伺服器傳送事件 (SSE) 的指導方針。 SSE 以 HTML5 EventSource 標準為基礎,可在用戶端建立連線之後,透過 HTTP 自動將資料串流 (推送) 至用戶端。

提示

API 管理也提供 WebSocket API 的原生支援,可在用戶端與伺服器之間保持開啟單一、持續性、雙向的連線。

必要條件

SSE 的指導方針

使用 API 管理來連線到實作 SSE 的後端 API 時,請遵循這些指導方針。

  • 針對長時間執行的 HTTP 連線選擇服務層級 - SSE 依賴特定 API 管理 定價層支援的長時間執行的 HTTP 連線。 傳統和 v2 API 管理 層支持長時間執行的連線,但在取用層中則不支援。

  • 讓閒置連線保持運作 - 如果用戶端與後端之間的連線可能閒置 4 分鐘或更久,請實作讓連線保持運作的機制。 例如,在連線後端啟用 TCP 保持連線訊號,或至少每 4 分鐘從用戶端傳送一次流量。

    需要此組態,才能覆寫 Azure Load Balancer 強制執行的閒置工作階段逾時 4 分鐘,這在 API 管理基礎結構中使用。

  • 立即將事件轉送至用戶端 - 在 forward-request 原則上關閉回應緩衝,以立即將事件轉送至用戶端。 例如:

    <forward-request timeout="120" fail-on-error-status-code="true" buffer-response="false"/>
    
  • 避免其他緩衝回應的原則 - 某些原則 (例如 validate-content) 也可能緩衝回應內容,不應該與實作 SSE 的 API 一起使用。

  • 避免記錄 Azure 監視器、Application Insights 和事件中樞的要求/回應本文 - 可利用診斷設定,針對 Azure 監視器或 Application Insights 的 API 要求進行記錄設定。 透過診斷設定,您可隨時於要求執行期間記錄要求/回應本文。 針對實作 SSE 的 API,這可能會引起非預期的緩衝,並導致問題發生。 若 Azure 監視器和 Application Insights 以全域/所有 API 為範圍設置診斷設定,則服務中所有 API 均適用此設定。 您可視需求覆寫個別 API 的設定。 在記錄於事件中樞時可使用 log-to-eventhubs,針對要求/回應的記錄設定內容資訊的範圍與數量。 針對實作 SSE 的 API,請確定 Azure 監視器、Application Insights 和事件中樞的要求/回應本文記錄均已停用。

  • 停用回應快取 - 為了確保及時通知用戶端,請確認未啟用回應快取。 如需詳細資訊,請參閱 API 管理快取原則

  • 在負載下測試 API - 在進入生產環境之前,遵循一般做法在負載下測試 API,以偵測效能或設定問題。

下一步