WebTransportBidirectionalStream
Ограниченная доступность
Эта функция не является базовой, так как она не работает во всех наиболее широко используемых браузерах.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
Интерфейс WebTransportBidirectionalStream API WebTransport представляет собой двунаправленный поток, созданный сервером или клиентом, который может использоваться для надежной передачи данных. Предоставляет доступ к WebTransportReceiveStream для чтения входящих данных и WebTransportSendStream для записи исходящих данных.
Свойства экземпляра
-
readableТолько для чтения -
Возвращает экземпляр
WebTransportReceiveStream, который можно использовать для чтения входящих данных. -
writableТолько для чтения -
Возвращает экземпляр
WebTransportSendStream, который можно использовать для записи исходящих данных.
Примеры
Двунаправленная передача, инициированная пользователем
Чтобы открыть двунаправленный поток из пользовательского агента, используйте метод WebTransport.createBidirectionalStream() для получения ссылки на WebTransportBidirectionalStream. Свойства readable и writable возвращают ссылки на экземпляры WebTransportReceiveStream и WebTransportSendStream. Они наследуются от ReadableStream и WritableStream соответственно и могут использоваться для чтения и записи на сервер.
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;
...
}
Чтение из WebTransportReceiveStream можно выполнить так же, как вы бы читали 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);
}
}
Запись в WebTransportSendStream можно выполнить следующим образом:
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);
}
Двунаправленная передача, инициированная сервером
Если сервер открывает двунаправленный поток для передачи данных клиенту и получения их от клиента, к нему можно получить доступ через свойство WebTransport.incomingBidirectionalStreams, которое возвращает ReadableStream объектов WebTransportBidirectionalStream. Каждый из них может использоваться для чтения и записи экземпляров Uint8Array, как показано выше. Однако вам нужна начальная функция для чтения двунаправленного потока в первую очередь:
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);
}
}
Спецификации
| Спецификация |
|---|
| WebTransport # webtransportbidirectionalstream |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
WebTransportBidirectionalStream |
97 | 97 | 114 | 83 | Нет | 97 | 114 | 68 | Нет | 18.0 | 97 |
readable |
97 | 97 | 114 | 83 | Нет | 97 | 114 | 68 | Нет | 18.0 | 97 |
writable |
97 | 97 | 114 | 83 | Нет | 97 | 114 | 68 | Нет | 18.0 | 97 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/WebTransportBidirectionalStream