WebTransport: Methode createBidirectionalStream()
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 und gibt asynchron 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 zum zuverlässigen Lesen vom und Schreiben zum Server verwendet werden können. "Zuverlässig" bedeutet, dass Übertragung und Reihenfolge der Daten garantiert sind. Dies bietet eine langsamere Übertragung (wenn auch schneller als mit WebSockets) als datagrams
, ist aber in Situationen notwendig, in denen Zuverlässigkeit und Reihenfolge wichtig sind, wie z.B. bei Chat-Anwendungen.
Die relative Reihenfolge, in der gepufferte Bytes aus erstellten Streams entleert werden, kann mit der sendOrder
-Option spezifiziert werden. Wenn gesetzt, werden gepufferte Bytes in Streams mit einer höheren Sendereihenfolge garantiert vor gepufferten Bytes in Streams mit einer niedrigeren Sendereihenfolge gesendet. Wenn die Ordnungszahl nicht festgelegt 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 Sendereihenfolge zuerst gesendet werden, sie möglicherweise nicht zuerst ankommen.
Syntax
createBidirectionalStream()
createBidirectionalStream(options)
Parameter
options
Optional-
Ein Objekt, das die folgenden Eigenschaften haben kann:
sendOrder
Optional-
Ein ganzzahliger Wert, der die Sendepriorität dieses Streams relativ zu anderen Streams angibt, für die der Wert festgelegt wurde. Gepufferte Bytes werden zuerst für Streams gesendet, die einen höheren Wert haben. Wenn nicht festgelegt, hängt die Sendereihenfolge von der Implementierung ab.
Rückgabewert
Ein Promise
, das zu einem WebTransportBidirectionalStream
-Objekt aufgelöst wird.
Ausnahmen
InvalidStateError
DOMException
-
Wird ausgelöst, wenn
createBidirectionalStream()
aufgerufen wird, während derWebTransport
geschlossen oder fehlgeschlagen ist.
Beispiele
Eine anfängliche Funktion wird verwendet, um Referenzen zu den WebTransportBidirectionalStream.readable
- und WebTransportBidirectionalStream.writable
-Eigenschaften zu erhalten. Diese sind Referenzen zu WebTransportReceiveStream
und WebTransportSendStream
Instanzen, welche lesbare und schreibbare Streams sind, die zum Lesen vom und Schreiben zum Server verwendet 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 aus dem 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 zum WebTransportSendStream
kann wie folgt durchgeführt werden:
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 |