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

View in English Always switch to English

WebTransportDatagramDuplexStream

Baseline 2026
Neu verfügbar

Seit März 2026 funktioniert diese Funktion auf aktuellen Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.

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 WebTransportDatagramDuplexStream-Schnittstelle der WebTransport API stellt einen Duplex-Stream dar, der für die unzuverlässige Übertragung von Datagrammen zwischen Client und Server verwendet werden kann. Sie bietet Zugriff auf einen ReadableStream zum Lesen eingehender Datagramme, einen WritableStream zum Schreiben ausgehender Datagramme sowie auf verschiedene Einstellungen und Statistiken zum Stream.

Der Zugriff erfolgt über die Eigenschaft WebTransport.datagrams.

„Unzuverlässig“ bedeutet, dass weder die Übertragung der Daten noch ihre Ankunft in einer bestimmten Reihenfolge garantiert ist. Das ist in manchen Situationen unproblematisch und ermöglicht eine sehr schnelle Zustellung. Beispielsweise könnten Sie regelmäßig Aktualisierungen des Spielzustands übertragen, bei denen jede Nachricht die zuletzt eingetroffene ersetzt und die Reihenfolge keine Rolle spielt.

Instanzeigenschaften

incomingHighWaterMark

Gibt die maximale Anzahl eingehender Datagramme an, die in die Warteschlange gestellt werden können, während sie darauf warten, aus dem readable-Stream gelesen zu werden. Verwenden Sie stattdessen incomingMaxBufferedDatagrams.

incomingMaxAge

Ruft das maximale Alter eingehender Datagramme in Millisekunden ab oder legt es fest. Gibt null zurück, wenn kein maximales Alter festgelegt wurde.

incomingMaxBufferedDatagrams

Gibt die maximale Anzahl eingehender Datagramme an, die in die Warteschlange gestellt werden können, während sie darauf warten, aus dem readable-Stream gelesen zu werden.

maxDatagramSize Schreibgeschützt

Gibt die maximal zulässige Größe ausgehender Datagramme in Bytes zurück, die in ein über createWritable() erhaltenes WebTransportDatagramsWritable oder über die veraltete Eigenschaft writable geschrieben werden können.

outgoingHighWaterMark

Gibt die maximale Anzahl ausgehender Datagramme an, die zum Senden in die Warteschlange gestellt werden können, bevor Gegendruck ausgeübt wird. Verwenden Sie stattdessen outgoingMaxBufferedDatagrams.

outgoingMaxAge

Ruft das maximale Alter ausgehender Datagramme in Millisekunden ab oder legt es fest. Gibt null zurück, wenn kein maximales Alter festgelegt wurde.

outgoingMaxBufferedDatagrams

Gibt die maximale Anzahl ausgehender Datagramme an, die für jedes WebTransportDatagramsWritable zum Senden in die Warteschlange gestellt werden können, bevor Gegendruck ausgeübt wird.

readable Schreibgeschützt

Gibt eine ReadableStream-Instanz zurück, mit der eingehende Datagramme aus dem Stream gelesen werden können.

writable Schreibgeschützt

Gibt eine WritableStream-Instanz zurück, mit der ausgehende Datagramme in den Stream geschrieben werden können.

Instanzmethoden

createWritable()

Gibt eine WebTransportDatagramsWritable-Instanz zurück, mit der ausgehende Datagramme in den Stream geschrieben werden können.

Beispiele

Ausgehende Datagramme schreiben

Dieser Code verwendet, sofern unterstützt, die Methode createWritable(), um eine WebTransportDatagramsWritable-Instanz zu erhalten, mit der Daten an den Transport geschrieben werden können. Andernfalls greift er auf die Eigenschaft writable zurück. Diese gibt ein WritableStream-Objekt zurück, in das Sie mithilfe eines Writers Daten schreiben können:

js
const writableStream =
  typeof transport.datagrams.createWritable === "function"
    ? transport.datagrams.createWritable()
    : transport.datagrams.writable; // Deprecated and non-standard

const writer = writableStream.getWriter();
const data1 = new Uint8Array([65, 66, 67]);
const data2 = new Uint8Array([68, 69, 70]);
await writer.ready;
writer.write(data1);
await writer.ready;
writer.write(data2);

Eingehende Datagramme lesen

Die Eigenschaft readable gibt ein ReadableStream-Objekt zurück, mit dem Sie Daten vom Server empfangen können:

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

Alternativ können Sie Datagramme in einen von Ihnen bereitgestellten Puffer lesen. Erstellen Sie dazu den Transport mit der Option datagramsReadableType, die auf bytes gesetzt ist, und lesen Sie den Stream mit einem ReadableStreamBYOBReader. Ein Beispiel finden Sie unter Datagramme mit einem BYOB-Reader lesen auf der Seite zum Konstruktor WebTransport().

Spezifikationen

Spezifikation
WebTransport
# webtransportdatagramduplexstream

Browser-Kompatibilität

Siehe auch