Limited availability
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.
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.
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 Browser-Kompatibilität Siehe auch
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4