WebTransportBidirectionalStream
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.
Das WebTransportBidirectionalStream
Interface der WebTransport API repräsentiert einen bidirektionalen Stream, der von einem Server oder Client erstellt wurde und für den zuverlässigen Transport verwendet werden kann. Es bietet Zugriff auf einen WebTransportReceiveStream
zum Lesen eingehender Daten und einen WebTransportSendStream
zum Schreiben ausgehender Daten.
Instanzeigenschaften
readable
Schreibgeschützt-
Gibt eine Instanz von
WebTransportReceiveStream
zurück, die zum Lesen eingehender Daten verwendet werden kann. writable
Schreibgeschützt-
Gibt eine Instanz von
WebTransportSendStream
zurück, die zum Schreiben ausgehender Daten verwendet werden kann.
Beispiele
Bidirektionale Übertragung, initiiert durch den User-Agent
Um einen bidirektionalen Stream von einem User-Agent zu öffnen, verwenden Sie die Methode WebTransport.createBidirectionalStream()
, um eine Referenz zu einem WebTransportBidirectionalStream
zu erhalten. Die Eigenschaften readable
und writable
geben Referenzen zu WebTransportReceiveStream
- und WebTransportSendStream
-Instanzen zurück.
Diese erben jeweils von ReadableStream
und WritableStream
und können verwendet werden, um vom Server zu lesen und an diesen zu schreiben.
async function setUpBidirectional() {
const stream = await transport.createBidirectionalStream();
// stream is a WebTransportBidirectionalStream
// stream.readable is a WebTransportReceiveStream
const readable = stream.readable;
// stream.writable is a WebTransportSendStream
const writable = stream.writable;
// …
}
Das Lesen vom WebTransportReceiveStream
kann auf die gleiche Weise erfolgen wie das Lesen eines ReadableStream
:
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 folgendermaßen 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);
}
Bidirektionale Übertragung, initiiert durch den Server
Wenn der Server einen bidirektionalen Stream öffnet, um Daten an den Client zu übertragen und zu empfangen, kann darauf über die Eigenschaft WebTransport.incomingBidirectionalStreams
zugegriffen werden, die einen ReadableStream
von WebTransportBidirectionalStream
-Objekten zurückgibt. Jeder dieser Streams kann verwendet werden, um Uint8Array
-Instanzen zu lesen und zu schreiben, wie oben gezeigt. Allerdings benötigen Sie eine initiale Funktion, um den bidirektionalen Stream zu lesen:
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);
}
}
Spezifikationen
Specification |
---|
WebTransport # webtransportbidirectionalstream |