WebTransport: incomingBidirectionalStreams-Eigenschaft
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: Dieses Feature ist verfügbar in Web Workers.
Die incomingBidirectionalStreams
-Eigenschaft des WebTransport
-Interfaces stellt einen oder mehrere vom Server geöffnete bidirektionale Streams dar. Sie gibt einen ReadableStream
von WebTransportBidirectionalStream
-Objekten zurück. Jeder dieser Streams kann verwendet werden, um zuverlässig Daten vom Server zu lesen und Daten an diesen zurückzuschreiben.
"Zuverlässig" bedeutet, dass Übertragung und Reihenfolge der Daten garantiert sind. Dies bietet eine langsamere Lieferung (wenn auch schneller als mit WebSockets) als Datagramme
, ist jedoch in Situationen erforderlich, in denen Zuverlässigkeit und Reihenfolge wichtig sind, wie bei Chat-Anwendungen.
Wert
Ein ReadableStream
von WebTransportBidirectionalStream
-Objekten.
Beispiele
Eine anfängliche Funktion wird verwendet, um die WebTransportBidirectionalStream
-Objekte aus dem ReadableStream
zu lesen. Für jedes wird die WebTransportBidirectionalStream.readable
und WebTransportBidirectionalStream.writable
-Werte an andere Funktionen übergeben, um von diesen Streams zu lesen bzw. in diese zu schreiben.
async function receiveBidirectional() {
const bds = transport.incomingBidirectionalStreams;
const reader = bds.getReader();
while (true) {
const { done, value } = await reader.read();
if (done) {
break;
}
// value is an instance of WebTransportBidirectionalStream
await readData(value.readable);
await writeData(value.writable);
}
}
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);
}
}
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-incomingbidirectionalstreams |
Browser-Kompatibilität
BCD tables only load in the browser