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 der WebTransport
-Schnittstelle öffnet asynchron einen bidirektionalen Stream und gibt diesen zurück.
Die Methode gibt ein Promise
zurück, das in ein WebTransportBidirectionalStream
-Objekt aufgelöst wird, welches die Eigenschaften readable
und writable
enthält, die zum zuverlässigen Lesen vom und Schreiben zum Server genutzt werden können.
"Zuverlässig" bedeutet, dass Übertragung und Reihenfolge der Daten garantiert sind.
Dies bietet langsamere Lieferung (wenn auch schneller als mit WebSockets) als datagrams
, ist jedoch notwendig in Situationen, in denen Zuverlässigkeit und Reihenfolge wichtig sind, wie zum Beispiel bei Chat-Anwendungen.
Die relative Reihenfolge, in der die in Warteschlangen befindlichen Bytes von erstellten Streams geleert werden, kann über die sendOrder
-Option festgelegt werden.
Wenn gesetzt, wird garantiert, dass Bytes in Streams mit einer höheren Sendepriorität vor Bytes in Streams mit niedrigerer Sendepriorität gesendet werden.
Wenn die Ordnungsnummer nicht gesetzt ist, hängt die Reihenfolge, in der Bytes gesendet werden, von der Implementierung ab.
Beachten Sie jedoch, dass auch wenn Bytes von Streams mit höherer Sendepriorität zuerst gesendet werden, sie nicht unbedingt zuerst ankommen müssen.
Syntax
createBidirectionalStream()
createBidirectionalStream(options)
Parameter
options
Optional-
Ein Objekt, das folgende Eigenschaften haben kann:
sendOrder
Optional-
Ein Ganzzahlwert, der die Sendepriorität dieses Streams relativ zu anderen Streams angibt, für die der Wert gesetzt wurde. Bytes in der Warteschlange werden zuerst für Streams mit einem höheren Wert gesendet. Wenn nicht gesetzt, hängt die Sendeordnung von der Implementierung ab.
Rückgabewert
Ein Promise
, das in ein WebTransportBidirectionalStream
-Objekt aufgelöst wird.
Ausnahmen
InvalidStateError
DOMException
-
Wird ausgelöst, wenn
createBidirectionalStream()
aufgerufen wird, während derWebTransport
geschlossen oder fehlgeschlagen ist.
Beispiele
Eine initiale Funktion wird verwendet, um Referenzen zu den Eigenschaften WebTransportBidirectionalStream.readable
und WebTransportBidirectionalStream.writable
zu erhalten. Diese sind Referenzen auf die Instanzen von WebTransportReceiveStream
und WebTransportSendStream
, welche lesbare und schreibbare Streams sind, die zum Lesen vom und Schreiben zum Server genutzt werden können.
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;
// …
}
Das Lesen vom WebTransportReceiveStream
kann dann wie folgt durchgeführt werden:
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 so 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 |