使用 WebSocket

本頁內容適用於 ApigeeApigee Hybrid

查看 Apigee Edge 說明文件。

本主題將討論如何搭配使用 WebSockets 與 Apigee 和 Apigee Hybrid。

簡介

在許多情況下,網頁互動需要即時進行,例如遊戲、通訊、金融交易和其他高輸送量活動。

WebSocket 是一種通訊協定,可在網頁用戶端和網頁伺服器之間,透過單一 TCP 連線提供全雙工通訊管道。WebSocket 通訊協定會使用 HTTP 通訊協定,在用戶端和伺服器之間建立連線。建立連線後,用戶端和伺服器就會使用 WebSocket 通訊協定傳送及接收資料。

WebSockets 規格和通訊協定是由 W3C 維護。

Apigee 支援 WebSocket

在 Apigee 和 Apigee Hybrid 中,環境群組會提供環境的路由,並定義 API Proxy 公開的主機名稱。環境群組原生支援 HTTP 和 WS 通訊協定。您不必建立特殊環境群組或任何特殊設定,即可使用 WebSocket。而是由用戶端透過加入 Upgrade 要求標頭,要求將通訊協定從 HTTP 升級為 WS。對 API Proxy 端點發出的升級要求會傳回 101 Switching Protocols 回應。在連線關閉前,後續要求和回應都會在開啟的 WebSockets 連線上雙向傳送。

政策支援

在完成交握程序前 (也就是 HTTP 101 回應傳回用戶端前),所有政策都會在 WebSocket Proxy 中運作。交握程序完成後,系統不會執行任何政策,但交握程序前驗證的 OAuth 權杖仍會生效,如果權杖過期或遭到撤銷,連線就會中斷。

撤銷連結

在下列情況下,系統會關閉 WebSockets 連線:

  • Proxy 端點收到沒有 API 金鑰或 OAuth 權杖的要求。
  • Proxy 端點收到要求,但 API 金鑰或 OAuth 權杖已過期或無效。
  • WebSocket 連線逾時。

使用追蹤記錄和數據分析

在「偵錯」工具中,每個 WebSockets 連線都會顯示一個要求,並附上 101 狀態,如下列螢幕截圖所示:

在偵錯工具中,要求狀態為 101。

在 Apigee Analytics 資訊主頁中,您會看到每個 WebSocket 工作階段的流量計數。工作階段期間來回傳輸的流量不會顯示在資訊主頁中。

WebSocket 應用程式範例

如要瞭解詳情,請參閱 GitHub 上的運作中 websocket-sample 應用程式。這個範例會示範如何透過 WebSockets 連線呼叫 API Proxy。Proxy 會呼叫部署在 Kubernetes 叢集中的簡單後端目標應用程式。