WebTransport: incomingBidirectionalStreams-Eigenschaft

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

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

Die incomingBidirectionalStreams-Eigenschaft des WebTransport-Interfaces stellt einen oder mehrere vom Server geöffnete bidirektionale Streams dar. Sie gibt einen ReadableStream von WebTransportBidirectionalStream-Objekten zurück. Jeder dieser Streams kann verwendet werden, um zuverlässig Daten vom Server zu lesen und Daten an diesen zurückzuschreiben.

"Zuverlässig" bedeutet, dass Übertragung und Reihenfolge der Daten garantiert sind. Dies bietet eine langsamere Lieferung (wenn auch schneller als mit WebSockets) als Datagramme, ist jedoch in Situationen erforderlich, in denen Zuverlässigkeit und Reihenfolge wichtig sind, wie bei Chat-Anwendungen.

Wert

Beispiele

Eine anfängliche Funktion wird verwendet, um die WebTransportBidirectionalStream-Objekte aus dem ReadableStream zu lesen. Für jedes wird die WebTransportBidirectionalStream.readable und WebTransportBidirectionalStream.writable-Werte an andere Funktionen übergeben, um von diesen Streams zu lesen bzw. in diese zu schreiben.

js
async function receiveBidirectional() {
  const bds = transport.incomingBidirectionalStreams;
  const reader = bds.getReader();
  while (true) {
    const { done, value } = await reader.read();
    if (done) {
      break;
    }
    // value is an instance of WebTransportBidirectionalStream
    await readData(value.readable);
    await writeData(value.writable);
  }
}

async function readData(readable) {
  const reader = readable.getReader();
  while (true) {
    const { value, done } = await reader.read();
    if (done) {
      break;
    }
    // value is a Uint8Array.
    console.log(value);
  }
}

async function writeData(writable) {
  const writer = writable.getWriter();
  const data1 = new Uint8Array([65, 66, 67]);
  const data2 = new Uint8Array([68, 69, 70]);
  writer.write(data1);
  writer.write(data2);
}

Spezifikationen

Specification
WebTransport
# dom-webtransport-incomingbidirectionalstreams

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch