WebSocketStream

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

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

Das WebSocketStream-Interface der WebSockets-API ist eine versprechenbasierte API zum Verbinden mit einem WebSocket-Server. Es verwendet Streams, um Daten über die Verbindung zu senden und zu empfangen, und kann daher automatisch von der Stream-Gegenstromkontrolle profitieren, die die Geschwindigkeit des Lesens oder Schreibens reguliert, um Engpässe in der Anwendung zu vermeiden.

Konstruktor

WebSocketStream() Experimentell

Erstellt eine neue Instanz des WebSocketStream-Objekts.

Instanz-Eigenschaften

url Schreibgeschützt Experimentell

Gibt die URL des WebSocket-Servers zurück, mit dem die WebSocketStream-Instanz erstellt wurde.

closed Schreibgeschützt Experimentell

Gibt ein Promise zurück, das mit einem Objekt erfüllt wird, sobald die Socket-Verbindung geschlossen ist. Das Objekt enthält den Schließscode und den Grund, wie er vom Server gesendet wurde.

opened Schreibgeschützt Experimentell

Gibt ein Promise zurück, das mit einem Objekt erfüllt wird, sobald die Socket-Verbindung erfolgreich geöffnet wurde. Unter anderem enthält dieses Objekt eine Instanz von ReadableStream und WritableStream zum Empfangen und Senden von Daten über die Verbindung.

Instanz-Methoden

close() Experimentell

Schließt die WebSocket-Verbindung.

Beispiele

js
const output = document.querySelector("#output");

function writeToScreen(message) {
  const pElem = document.createElement("p");
  pElem.textContent = message;
  output.appendChild(pElem);
}

if (!("WebSocketStream" in self)) {
  writeToScreen("Your browser does not support WebSocketStream");
} else {
  const wsURL = "ws://127.0.0.1/";
  const wss = new WebSocketStream(wsURL);

  console.log(wss.url);

  async function start() {
    const { readable, writable, extensions, protocol } = await wss.opened;
    writeToScreen("CONNECTED");
    closeBtn.disabled = false;
    const reader = readable.getReader();
    const writer = writable.getWriter();

    writer.write("ping");
    writeToScreen("SENT: ping");

    while (true) {
      const { value, done } = await reader.read();
      writeToScreen(`RECEIVED: ${value}`);
      if (done) {
        break;
      }

      setTimeout(() => {
        writer.write("ping");
        writeToScreen("SENT: ping");
      }, 5000);
    }
  }

  start();
}

Sehen Sie Using WebSocketStream to write a client für ein vollständiges Beispiel mit umfassender Erklärung.

Spezifikationen

Derzeit nicht Teil irgendeiner Spezifikation. Siehe https://github.com/whatwg/websockets/pull/48 für den Standardisierungsfortschritt.

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
WebSocketStream
Experimental
WebSocketStream() constructor
Experimental
close
Experimental
closed
Experimental
opened
Experimental
url
Experimental

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.

Siehe auch