Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

WebSocket API (WebSockets)

Baseline
Weitgehend verfügbar
*

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.

* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die WebSocket API ermöglicht es, eine interaktive Zwei-Wege-Kommunikationssitzung zwischen dem Browser einer Person und einem Server zu öffnen. Mit dieser API können Sie Nachrichten an einen Server senden und Antworten empfangen, ohne den Server wiederholt nach einer Antwort abfragen zu müssen.

Das WebSocket-Interface unterstützt kein Backpressure. Wenn Nachrichten schneller eintreffen, als die Anwendung sie verarbeiten kann, füllen die zwischengespeicherten Nachrichten daher möglicherweise den Gerätespeicher, die Anwendung reagiert aufgrund einer CPU-Auslastung von 100 % nicht mehr oder beides tritt ein. Falls Backpressure erforderlich ist, verwenden Sie stattdessen die WebTransport API: Sie unterstützt Backpressure und viele weitere Funktionen, die WebSocket nicht bietet, etwa unidirektionale Streams, die Zustellung außerhalb der ursprünglichen Reihenfolge und eine unzuverlässige Datenübertragung per Datagramm. Das WebSocketStream-Interface ist ein früherer Versuch, das Backpressure-Problem zu lösen. Es ist jedoch nicht standardisiert und wird weniger breit unterstützt als die WebTransport API.

Hinweis: Wenn eine Seite eine offene WebSocket-Verbindung hat, nimmt der Browser sie möglicherweise nicht in den bfcache auf. Es empfiehlt sich daher, die Verbindung zu schließen, wenn die Person die Seite nicht mehr verwendet. Weitere Informationen finden Sie unter Arbeiten mit dem bfcache.

Leitfäden

Interfaces

WebSocket

Das primäre Interface, um eine Verbindung zu einem WebSocket-Server herzustellen und anschließend Daten über die Verbindung zu senden und zu empfangen.

WebSocketStream

Promise-basiertes Interface zum Herstellen einer Verbindung zu einem WebSocket-Server; verwendet Streams, um Daten über die Verbindung zu senden und zu empfangen.

CloseEvent

Das Event, das das WebSocket-Objekt sendet, wenn die Verbindung geschlossen wird.

MessageEvent

Das Event, das das WebSocket-Objekt sendet, wenn eine Nachricht vom Server empfangen wird.

Zugehörige HTTP-Header

Die HTTP-Header werden beim WebSocket-Handshake verwendet:

Sec-WebSocket-Key

Ein HTTP-Request-Header, der eine Nonce des Clients enthält. Sie wird beim WebSocket-Opening-Handshake verwendet, um zu überprüfen, ob der Client ausdrücklich eine WebSocket-Verbindung öffnen möchte. Der Browser fügt den Header automatisch hinzu.

Sec-WebSocket-Accept

Ein HTTP-Response-Header, der beim WebSocket-Opening-Handshake angibt, dass der Server bereit ist, auf eine WebSocket-Verbindung zu wechseln. Der Wert der Direktive wird aus dem Wert von Sec-WebSocket-Key im zugehörigen Request berechnet.

Sec-WebSocket-Version

Ein HTTP-Header, der in Requests die Version des WebSocket-Protokolls angibt, die der Client unterstützt. In Responses wird er nur gesendet, wenn der Server die angeforderte Protokollversion nicht unterstützt. Er listet dann die vom Server unterstützten Versionen auf.

Sec-WebSocket-Protocol

Ein HTTP-Header, der in Requests die vom Client unterstützten Subprotokolle in bevorzugter Reihenfolge angibt. In Responses gibt er das Subprotokoll an, das der Server aus den Präferenzen des Clients ausgewählt hat.

Sec-WebSocket-Extensions

Ein HTTP-Header, der in Requests die vom Client unterstützten WebSocket-Erweiterungen in bevorzugter Reihenfolge angibt. In Responses gibt er die Erweiterung an, die der Server aus den Präferenzen des Clients ausgewählt hat.

Bibliotheken

  • AsyncAPI: Eine Spezifikation zur Beschreibung ereignisgesteuerter Architekturen auf Grundlage von Protokollen wie WebSocket. Damit können Sie WebSocket-basierte APIs beschreiben, ähnlich wie REST-APIs mit der OpenAPI-Spezifikation. Erfahren Sie, warum Sie AsyncAPI mit WebSocket verwenden sollten und wie das geht.
  • µWebSockets: Hochgradig skalierbare WebSocket-Server- und -Client-Implementierung für C++11 und Node.js.
  • Socket.IO: Ein auf Long Polling und WebSocket basierendes Übertragungsprotokoll eines Drittanbieters für Node.js.
  • SocketCluster: Ein auf Skalierbarkeit ausgelegtes Pub/Sub-WebSocket-Framework für Node.js.
  • WebSocket-Node: Eine WebSocket-Server-API-Implementierung für Node.js.
  • Total.js: Webanwendungs-Framework für Node.js (Beispiel: WebSocket-Chat)
  • SignalR: SignalR verwendet im Hintergrund WebSockets, wenn sie verfügbar sind. Andernfalls greift es nahtlos auf andere Techniken und Technologien zurück, ohne dass sich Ihr Anwendungscode ändern muss.
  • Caddy: Ein Webserver, der beliebige Befehle (stdin/stdout) über einen WebSocket weiterleiten kann.
  • ws: Eine beliebte WebSocket-Client- und -Serverbibliothek für Node.js.
  • cowboy: Cowboy ist ein kleiner, schneller und moderner HTTP-Server für Erlang/OTP mit WebSocket-Unterstützung.
  • ZeroMQ: ZeroMQ ist eine einbettbare Netzwerkbibliothek, die Nachrichten über In-Process-Kommunikation, IPC, TCP, UDP, TIPC, Multicast und WebSocket überträgt.
  • WebSocket King: Ein Client-Tool, das bei der Entwicklung, beim Testen und bei der Arbeit mit WebSocket-Servern hilft.
  • PHP WebSocket Server: Ein in PHP geschriebener Server, der Verbindungen über WebSockets mit wss:// oder ws:// sowie normale Sockets über ssl:// und tcp:// verarbeitet.
  • Django Channels: Eine Django-Bibliothek, die Unterstützung für WebSockets und andere Protokolle hinzufügt, die langlebige asynchrone Verbindungen erfordern.
  • (Phoenix) Channels: Skalierbare Echtzeitkommunikation über WebSocket im Elixir-Phoenix-Framework.
  • Phoenix LiveView: Interaktive Weberlebnisse in Echtzeit über WebSocket im Elixir-Phoenix-Framework.
  • Flask-SocketIO: Ermöglicht Flask-Anwendungen eine bidirektionale Kommunikation mit geringer Latenz zwischen Clients und Server.
  • Gorilla WebSocket: Gorilla WebSocket ist eine Go-Implementierung des WebSocket-Protokolls.

Spezifikationen

Spezifikation
WebSockets
# the-websocket-interface

Browser-Kompatibilität

Siehe auch