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.
Die createBidirectionalStream()
-Methode der WebTransport
-Schnittstelle öffnet asynchron einen bidirektionalen Stream und gibt diesen zurück.
Die Methode gibt ein Promise
zurück, das in ein WebTransportBidirectionalStream
-Objekt aufgelöst wird, welches die Eigenschaften readable
und writable
enthält, die zum zuverlässigen Lesen vom und Schreiben zum Server genutzt werden können. "Zuverlässig" bedeutet, dass Ãbertragung und Reihenfolge der Daten garantiert sind. Dies bietet langsamere Lieferung (wenn auch schneller als mit WebSockets) als datagrams
, ist jedoch notwendig in Situationen, in denen Zuverlässigkeit und Reihenfolge wichtig sind, wie zum Beispiel bei Chat-Anwendungen.
Die relative Reihenfolge, in der die in Warteschlangen befindlichen Bytes von erstellten Streams geleert werden, kann über die sendOrder
-Option festgelegt werden. Wenn gesetzt, wird garantiert, dass Bytes in Streams mit einer höheren Sendepriorität vor Bytes in Streams mit niedrigerer Sendepriorität gesendet werden. Wenn die Ordnungsnummer nicht gesetzt ist, hängt die Reihenfolge, in der Bytes gesendet werden, von der Implementierung ab. Beachten Sie jedoch, dass auch wenn Bytes von Streams mit höherer Sendepriorität zuerst gesendet werden, sie nicht unbedingt zuerst ankommen müssen.
createBidirectionalStream()
createBidirectionalStream(options)
Parameter
options
Optional
Ein Objekt, das folgende Eigenschaften haben kann:
sendOrder
Optional
Ein Ganzzahlwert, der die Sendepriorität dieses Streams relativ zu anderen Streams angibt, für die der Wert gesetzt wurde. Bytes in der Warteschlange werden zuerst für Streams mit einem höheren Wert gesendet. Wenn nicht gesetzt, hängt die Sendeordnung von der Implementierung ab.
Ein Promise
, das in ein WebTransportBidirectionalStream
-Objekt aufgelöst wird.
InvalidStateError
DOMException
Wird ausgelöst, wenn createBidirectionalStream()
aufgerufen wird, während der WebTransport
geschlossen oder fehlgeschlagen ist.
Eine initiale Funktion wird verwendet, um Referenzen zu den Eigenschaften WebTransportBidirectionalStream.readable
und WebTransportBidirectionalStream.writable
zu erhalten. Diese sind Referenzen auf die Instanzen von WebTransportReceiveStream
und WebTransportSendStream
, welche lesbare und schreibbare Streams sind, die zum Lesen vom und Schreiben zum Server genutzt 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 vom 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 in den WebTransportSendStream
kann so 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);
}
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