適用於:開發人員 | 基本 | 基本 v2 | 標準 | 標準 v2 | 進階 | 進階 v2
本文提供在 API 管理中設定 API 以實作伺服器傳送事件 (SSE) 的指導方針。 SSE 以 HTML5 EventSource 標準為基礎,可在建立用戶端連線之後,透過 HTTP 自動串流 (推送) 資料至用戶端。
秘訣
API 管理 也提供 WebSocket API 的原生支援,讓用戶端與伺服器之間的單一、持續性雙向連線保持開啟。
先決條件
- 現有的 API 管理執行個體。 若您還沒有執行個體,請加以建立。
- 實作 SSE 的 API。 使用其中一個支援的匯入方法,將 API 匯入和發佈至您的 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,以偵測效能或設定問題。