共用方式為


設定伺服器傳送事件的 API

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

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

秘訣

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

先決條件

SSE 的指導方針

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

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

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

    需要此設定才能覆寫 Azure Load Balancer 強制執行的閒置工作階段逾時 4 分鐘,這會用於 APIM 基礎結構。

  • 立即將事件轉送至用戶端 - 在 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 Monitor、Application Insights 和 Event Hubs 的請求/回應主體記錄功能。

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

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