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 einem Client erstellt wurde und für den zuverlässigen Transport verwendet werden kann. Es stellt Zugriff auf einen WebTransportReceiveStream
zum Lesen eingehender Daten sowie einen WebTransportSendStream
zum Schreiben ausgehender Daten bereit.
Instanz-Eigenschaften
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 auf einen 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 darauf 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 aus dem WebTransportReceiveStream
kann auf dieselbe 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 so 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);
}
Bidirektionale Übertragung initiiert durch den Server
Wenn der Server einen bidirektionalen Stream öffnet, um Daten an den Client zu senden und von diesem zu empfangen, kann über die Eigenschaft WebTransport.incomingBidirectionalStreams
darauf zugegriffen werden, die einen ReadableStream
von WebTransportBidirectionalStream
-Objekten zurückgibt. Jeder davon kann, wie oben gezeigt, zum Lesen und Schreiben von Uint8Array
-Instanzen verwendet werden. Jedoch benötigen Sie zunächst eine 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 |
Browser-Kompatibilität
BCD tables only load in the browser