WebSockets verwenden

Diese Seite gilt für Apigee und Apigee Hybrid.

Apigee Edge-Dokumentation aufrufen

In diesem Thema wird erläutert, wie Sie WebSockets mit Apigee und Apigee Hybrid verwenden.

Einführung

Es gibt viele Situationen, in denen Webinteraktionen in Echtzeit stattfinden müssen, z. B. Spiele, Kommunikation, Finanztransaktionen und andere Aktivitäten mit hohem Durchsatz.

WebSocket ist ein Protokoll zur Bereitstellung eines Vollduplex-Kommunikationskanals zwischen einem Webclient und einem Webserver über eine einzelne TCP-Verbindung. Das WebSocket-Protokoll verwendet das HTTP-Protokoll, um die Verbindung zwischen Client und Server herzustellen. Der Client und der Server verwenden dann das WebSocket-Protokoll, um Daten zu senden und zu empfangen.

Die WebSockets-Spezifikation und das Protokoll werden vom W3C verwaltet.

Unterstützung für WebSockets in Apigee

In Apigee und Apigee Hybrid bieten Umgebungsgruppen Routing zu Umgebungen und definieren die Hostnamen, unter denen API-Proxys zugänglich sind. Umgebungsgruppen unterstützen sowohl das HTTP- als auch das WS-Protokoll nativ. Zur Verwendung von WebSockets müssen Sie keine spezielle Umgebungsgruppe und keine spezielle Konfiguration erstellen.

Der Client muss über den Anfrageheader Upgrade ein Protokollupgrade von HTTP auf WS anfordern. Wenn eine Upgradeanfrage an einen API-Proxy gesendet wird, der mit einem gültigen WebSocket-Backend verbunden ist, gibt das Ziel eine 101 Switching Protocols-Antwort zurück. Weitere Anfragen und Antworten erfolgen bidirektional über die offene WebSockets-Verbindung, bis sie geschlossen wird.

Richtlinienunterstützung

Alle Richtlinien funktionieren in einem WebSocket-Proxy, bis der Handshake abgeschlossen ist, d.h. bis die HTTP 101-Antwort an den Client zurückgegeben wird. Danach wird keine Richtlinie mehr ausgeführt. OAuth-Tokens, die vor dem Handshake validiert wurden, werden jedoch weiterhin berücksichtigt. Die Verbindung wird getrennt, wenn das Token abläuft oder widerrufen wird.

Die Verbindung widerrufen

Die WebSockets-Verbindung wird in folgenden Fällen geschlossen:

  • Der Proxy-Endpunkt empfängt eine Anfrage ohne API-Schlüssel oder OAuth-Token.
  • Der Proxy-Endpunkt empfängt eine Anfrage mit einem abgelaufenen oder ungültigen API-Schlüssel oder OAuth-Token.
  • Die WebSockets-Verbindung wird wegen Zeitüberschreitung beendet.

Debugging und Analyse

Im Debugging-Tool wird für jede WebSockets-Verbindung eine Anfrage mit einem 101-Status angezeigt.

Im Apigee-Analyse-Dashboard sehen Sie den Traffic für jede WebSockets-Sitzung. Traffic, der während der Sitzung auftritt, wird nicht im Dashboard angezeigt.

WebSockets-Beispielanwendung

Weitere Informationen finden Sie in einer funktionierenden websocket-sample-Anwendung auf GitHub. Das Beispiel zeigt, wie ein API-Proxy über eine WebSocket-Verbindung aufgerufen wird. Der Proxy ruft eine einfache Back-End-Zielanwendung auf, die in Ihrem Kubernetes-Cluster bereitgestellt wird.