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: Methode createUnidirectionalStream()

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

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 Methode createUnidirectionalStream() der Schnittstelle WebTransport öffnet asynchron einen unidirektionalen Stream.

Die Methode gibt ein Promise zurück, das mit einem WritableStream-Objekt erfüllt wird. Mit diesem Objekt können Daten zuverlässig an den Server geschrieben werden.

„Zuverlässig“ bedeutet, dass die Übertragung und die Reihenfolge der Daten garantiert sind. Dadurch ist die Übertragung langsamer als mit datagrams (wenn auch schneller als mit WebSockets). Diese Zuverlässigkeit ist jedoch in Situationen erforderlich, in denen die vollständige Übertragung und die richtige Reihenfolge wichtig sind, beispielsweise bei Chat-Anwendungen.

Die relative Reihenfolge, in der Daten aus erstellten Streams gesendet werden, kann mit der Option sendOrder festgelegt werden. Ist sie gesetzt, werden ausstehende Daten aus Streams mit einem höheren sendOrder-Wert garantiert vor ausstehenden Daten aus Streams mit einem niedrigeren Wert gesendet. Ist kein Wert festgelegt, hängt die Sendereihenfolge von der Implementierung ab. Beachten Sie jedoch, dass Daten aus Streams mit einem höheren sendOrder-Wert nicht unbedingt zuerst ankommen, auch wenn sie zuerst gesendet werden.

Syntax

js
createUnidirectionalStream()
createUnidirectionalStream(options)

Parameter

options Optional

Ein Objekt, das die folgenden Eigenschaften haben kann:

sendOrder Optional

Eine Ganzzahl, die die Sendepriorität dieses Streams relativ zu anderen Streams angibt, für die ein Wert festgelegt wurde. Ausstehende Daten aus Streams mit einem höheren Wert werden zuerst gesendet. Ist kein Wert festgelegt, hängt die Sendereihenfolge von der Implementierung ab.

Rückgabewert

Ein Promise, das mit einem WebTransportSendStream-Objekt erfüllt wird (einem WritableStream).

Ausnahmen

InvalidStateError DOMException

Wird ausgelöst, wenn createUnidirectionalStream() aufgerufen wird, während die WebTransport-Verbindung geschlossen oder fehlgeschlagen ist.

Beispiele

Verwenden Sie die Methode createUnidirectionalStream(), um eine Referenz auf einen WritableStream zu erhalten. Darüber können Sie einen Writer abrufen, um Daten in den Stream zu schreiben und an den Server zu senden.

Verwenden Sie die Methode close() des resultierenden WritableStreamDefaultWriter, um den Stream zu schließen. Der Browser versucht, vor dem Schließen des Streams alle ausstehenden Daten zu senden.

js
async function writeData() {
  const stream = await transport.createUnidirectionalStream({
    sendOrder: "596996858",
  });
  const writer = stream.getWriter();
  const data1 = new Uint8Array([65, 66, 67]);
  const data2 = new Uint8Array([68, 69, 70]);
  writer.write(data1);
  writer.write(data2);

  try {
    await writer.close();
    console.log("All data has been sent.");
  } catch (error) {
    console.error(`An error occurred: ${error}`);
  }
}

Sie können auch WritableStreamDefaultWriter.abort() verwenden, um den Stream abrupt zu beenden. Bei Verwendung von abort() kann der Browser ausstehende Daten verwerfen, die noch nicht gesendet wurden.

js
// …

const stream = await transport.createUnidirectionalStream();
const writer = stream.getWriter();

// …

writer.write(data1);
writer.write(data2);
await writer.abort();
// Not all the data may have been written.

Spezifikationen

Spezifikation
WebTransport
# dom-webtransport-createunidirectionalstream

Browser-Kompatibilität

Siehe auch