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 stattdessenincomingMaxBufferedDatagrams. incomingMaxAge-
Ruft das maximale Alter eingehender Datagramme in Millisekunden ab oder legt es fest. Gibt
nullzurü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. maxDatagramSizeSchreibgeschützt-
Gibt die maximal zulässige Größe ausgehender Datagramme in Bytes zurück, die in ein über
createWritable()erhaltenesWebTransportDatagramsWritableoder über die veraltete Eigenschaftwritablegeschrieben 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
nullzurück, wenn kein maximales Alter festgelegt wurde. outgoingMaxBufferedDatagrams-
Gibt die maximale Anzahl ausgehender Datagramme an, die für jedes
WebTransportDatagramsWritablezum Senden in die Warteschlange gestellt werden können, bevor Gegendruck ausgeübt wird. readableSchreibgeschützt-
Gibt eine
ReadableStream-Instanz zurück, mit der eingehende Datagramme aus dem Stream gelesen werden können. writableSchreibgeschü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:
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:
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> |