WebSocket: WebSocket() Konstruktor

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Hinweis: Dieses Feature ist verfügbar in Web Workers.

Der WebSocket() Konstruktor gibt ein neues WebSocket-Objekt zurück und versucht sofort, eine Verbindung zur angegebenen WebSocket-URL herzustellen.

Syntax

js
new WebSocket(url)
new WebSocket(url, protocols)

Parameter

url

Die URL des Ziel-WebSocket-Servers, zu dem eine Verbindung hergestellt werden soll. Die URL muss eines der folgenden Schemata verwenden: ws, wss, http oder https und darf kein URL-Fragment enthalten. Wenn eine relative URL angegeben wird, bezieht sie sich auf die Basis-URL des aufrufenden Skripts.

protocols Optional

Ein einzelner String oder ein Array von Strings, das die vom Client gewünschte(n) Subprotokoll(e) in der Reihenfolge der Präferenz darstellt. Wenn es weggelassen wird, wird standardmäßig ein leeres Array verwendet, d.h. [].

Ein einzelner Server kann mehrere WebSocket-Subprotokolle implementieren und unterschiedliche Interaktionstypen je nach angegebenem Wert handhaben. Beachten Sie jedoch, dass pro Verbindung nur ein Subprotokoll ausgewählt werden kann.

Die zulässigen Werte sind diejenigen, die im Sec-WebSocket-Protocol HTTP-Header angegeben werden können. Diese sind Werte, die aus dem IANA WebSocket Subprotocol Name Registry ausgewählt werden, wie soap, wamp, ship und so weiter, oder können ein benutzerdefinierter Name sein, der von Client und Server gemeinsam verstanden wird.

Hinweis: Die Verbindung wird nicht hergestellt, bis das Subprotokoll mit dem Server ausgehandelt ist. Das ausgewählte Protokoll kann dann aus WebSocket.protocol gelesen werden: Es wird der leere String sein, wenn keine Verbindung hergestellt werden kann.

Ausnahmen

SyntaxError DOMException

Ausgelöst, wenn:

  • das Parsen von url fehlschlägt
  • url ein anderes Schema als ws, wss, http oder https hat
  • url ein Fragment hat
  • irgendein Wert in protocols mehr als einmal auftritt oder anderweitig die Anforderungen an Elemente, die den Wert von Sec-WebSocket-Protocol-Felder bilden, gemäß der WebSocket-Protokollspezifikation nicht entspricht

Beispiele

Die untenstehenden Beispiele zeigen, wie man sich mit einem WebSocket verbinden könnte.

Der folgende Code zeigt, wie wir uns mit einem Socket unter Verwendung einer URL mit dem Schema wss verbinden können:

js
const wssWebSocket = new WebSocket('wss://websocket.example.org');
console.log(wssWebSocket.url); // 'wss://websocket.example.org'
... // Do something with socket
wssWebSocket.close();

Der Code zum Herstellen einer Verbindung mit einer HTTPS-URL ist nahezu identisch. Im Hintergrund wird dies vom Browser in eine "WSS"-Verbindung umgewandelt, sodass die WebSocket.url das Schema "wss:" haben wird.

js
const httpsWebSocket = new WebSocket('https://websocket.example.org');
console.log(httpsWebSocket.url); // 'wss://websocket.example.org'
... // Do something with socket
httpsWebSocket.close();

Wir können auch relative URLs auflösen. Die absolute URL hängt von der Basis-URL des Kontextes ab, in dem sie aufgerufen wird.

js
relativeWebSocket = new WebSocket('/local/url');
... // Do something with socket
relativeWebSocket.close();

Spezifikationen

Specification
WebSockets Standard
# ref-for-dom-websocket-websocket①

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch

  • RFC 6455 (die WebSocket-Protokollspezifikation)