Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

WebTransport: createBidirectionalStream() Methode

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 createBidirectionalStream() Methode des WebTransport Interfaces öffnet asynchron und gibt einen bidirektionalen Stream zurück.

Die Methode gibt ein Promise zurück, das zu einem WebTransportBidirectionalStream Objekt aufgelöst wird, welches readable und writable Eigenschaften hat, die verwendet werden können, um zuverlässig vom und zum Server zu lesen und zu schreiben. "Zuverlässig" bedeutet, dass die Übertragung und Reihenfolge der Daten garantiert wird. Dies bietet eine langsamere Lieferung (wenn auch schneller als mit WebSockets) als datagrams, ist jedoch erforderlich in Situationen, in denen Zuverlässigkeit und Ordnung wichtig sind, wie z.B. bei Chat-Anwendungen.

Die relative Reihenfolge, in der die anstehenden Bytes aus den erstellten Streams geleert werden, kann mit der sendOrder Option spezifiziert werden. Wenn gesetzt, werden anstehende Bytes in Streams mit einer höheren Sendeordnung garantiert vor den anstehenden Bytes für Streams mit einer niedrigeren Sendeordnung gesendet. Wenn die Ordnungsnummer nicht gesetzt ist, hängt die Reihenfolge, in der Bytes gesendet werden, von der Implementierung ab. Beachten Sie jedoch, dass selbst wenn Bytes von Streams mit höherer Sendeordnung zuerst gesendet werden, sie nicht unbedingt zuerst ankommen.

Syntax

js
createBidirectionalStream()
createBidirectionalStream(options)

Parameter

options Optional

Ein Objekt, das die folgenden Eigenschaften haben kann:

sendOrder Optional

Ein ganzzahliger Wert, der die Sendepriorität dieses Streams relativ zu anderen Streams angibt, für die der Wert festgelegt wurde. Anstehende Bytes werden zuerst für Streams gesendet, die einen höheren Wert haben. Falls nicht gesetzt, hängt die Sendeordnung von der Implementierung ab.

Rückgabewert

Ein Promise, das zu einem WebTransportBidirectionalStream Objekt aufgelöst wird.

Ausnahmen

InvalidStateError DOMException

Wird ausgelöst, wenn createBidirectionalStream() aufgerufen wird, während der WebTransport geschlossen oder fehlgeschlagen ist.

Beispiele

Eine Anfangsfunktion wird verwendet, um Referenzen zu den WebTransportBidirectionalStream.readable und WebTransportBidirectionalStream.writable Eigenschaften zu erhalten. Diese sind Referenzen zu WebTransportReceiveStream und WebTransportSendStream Instanzen, bei denen es sich um lesbare und beschreibbare Ströme handelt, die verwendet werden können, um vom Server zu lesen und zum Server zu schreiben.

js
async function setUpBidirectional() {
  const stream = await transport.createBidirectionalStream({
    sendOrder: "596996858",
  });
  // stream is a WebTransportBidirectionalStream
  // stream.readable is a ReadableStream
  const readable = stream.readable;
  // stream.writable is a WritableStream
  const writable = stream.writable;

  // …
}

Lesen vom WebTransportReceiveStream kann dann wie folgt erfolgen:

js
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);
  }
}

Und das Schreiben in den WebTransportSendStream kann wie folgt erfolgen:

js
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-createbidirectionalstream

Browser-Kompatibilität

Siehe auch