使用 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 代理伺服器中運作。交握程序完成後,系統不會執行任何政策,但交握程序前驗證的 OAuth 權杖仍會生效,如果權杖過期或遭到撤銷,連線就會中斷。

撤銷連結

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

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

使用偵錯和數據分析功能

在「偵錯」工具中,每個 WebSocket 連線都會顯示一個要求,並附上 101 狀態

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

WebSocket 應用程式範例

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