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
createBidirectionalStream()
createBidirectionalStream(options)
Parameter
optionsOptional-
Ein Objekt, das die folgenden Eigenschaften haben kann:
sendOrderOptional-
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
InvalidStateErrorDOMException-
Wird ausgelöst, wenn
createBidirectionalStream()aufgerufen wird, während derWebTransportgeschlossen 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.
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:
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:
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> |