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

BCD tables only load in the browser

Siehe auch