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, bidirektionale Kommunikationsverbindung zwischen dem Browser des Benutzers und einem Server aufzubauen. 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, werden sie daher entweder so lange gepuffert, bis der Arbeitsspeicher des Geräts ausgelastet ist, oder die Anwendung reagiert aufgrund einer CPU-Auslastung von 100 % nicht mehr – oder beides tritt ein. Wenn Backpressure ein Problem darstellt, 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 Reihenfolge und die 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 gut unterstützt als die WebTransport API.

Hinweis: Wenn eine Seite über eine offene WebSocket-Verbindung verfügt, nimmt der Browser sie möglicherweise nicht in den bfcache auf. Daher empfiehlt es sich, die Verbindung zu schließen, sobald der Benutzer die Seite nicht mehr verwendet. Weitere Informationen finden Sie unter Arbeiten mit dem bfcache.

Interfaces

WebSocket

Das zentrale Interface, um eine Verbindung zu einem WebSocket-Server herzustellen und darüber Daten zu senden und zu empfangen.

WebSocketStream

Promise-basiertes Interface, um eine Verbindung zu einem WebSocket-Server herzustellen. Es verwendet Streams, um über die Verbindung Daten 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 anzeigt, dass der Server bereit ist, auf eine WebSocket-Verbindung umzusteigen. Der Wert dieser Direktive wird aus dem Wert von Sec-WebSocket-Key in der zugehörigen Anfrage berechnet.

Sec-WebSocket-Version

Ein HTTP-Header, der in Anfragen angibt, welche Version des WebSocket-Protokolls der Client unterstützt. In Antworten 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 Anfragen die vom Client unterstützten Unterprotokolle in der Reihenfolge ihrer Präferenz angibt. In Antworten gibt er das Unterprotokoll an, das der Server aus den Präferenzen des Clients ausgewählt hat.

Sec-WebSocket-Extensions

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

Leitfäden

Werkzeuge

  • AsyncAPI: Eine Spezifikation zur Beschreibung ereignisgesteuerter Architekturen, die auf Protokollen wie WebSocket basieren. Damit können Sie WebSocket-basierte APIs ähnlich beschreiben wie REST-APIs mit der OpenAPI-Spezifikation. Erfahren Sie, warum Sie AsyncAPI mit WebSocket verwenden sollten und wie das funktioniert.
  • µWebSockets: Hochgradig skalierbare WebSocket-Server- und -Clientimplementierung 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 WebSockets, wenn sie verfügbar sind, und weicht andernfalls nahtlos auf andere Techniken und Technologien aus. Ihr Anwendungscode bleibt dabei unverändert.
  • Caddy: Ein Webserver, der beliebige Befehle (stdin/stdout) über 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:// oder tcp:// verarbeitet.
  • Django Channels: Eine Django-Bibliothek, die Unterstützung für WebSockets und andere Protokolle hinzufügt, die langlebige asynchrone Verbindungen benötigen.
  • (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