WebTransport: метод createBidirectionalStream()
Ограниченное использование
Эта функция не является базовой, так как она не работает в некоторых из наиболее широко используемых браузеров.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
Метод createBidirectionalStream() интерфейса WebTransport асинхронно открывает и возвращает двунаправленный поток.
Метод возвращает Promise, который разрешается объектом WebTransportBidirectionalStream, имеющим свойства readable и writable, которые могут использоваться для надёжного чтения и записи на сервер. «Надёжное» означает, что гарантируется передача и порядок данных. Это обеспечивает более медленную доставку (хотя и быстрее, чем с WebSockets), чем datagrams, но необходимо в ситуациях, где важны надёжность и порядок, например, в приложениях чата.
Относительный порядок, в котором очереди байтов опорожняются из созданных потоков, можно указать с помощью параметра sendOrder. Если он задан, очереди байтов в потоках с более высоким порядком отправки гарантированно будут отправлены до очереди байтов для потоков с более низким порядком отправки. Если номер порядка не задан, порядок отправки байтов зависит от реализации. Однако следует учесть, что, хотя байты из потоков с более высоким порядком отправки отправляются первыми, они могут не прибыть первыми.
Синтаксис
createBidirectionalStream() createBidirectionalStream(options)
Параметры
optionsНеобязательно-
Объект, который может иметь следующие свойства:
sendOrderНеобязательно-
Целое значение, определяющее приоритет отправки этого потока относительно других потоков, для которых это значение было установлено. Очереди байтов отправляются первыми для потоков с более высоким значением. Если не задано, порядок отправки зависит от реализации.
Возвращаемое значение
A Promise, который разрешается объектом WebTransportBidirectionalStream.
Исключения
-
InvalidStateErrorDOMException -
Выбрасывается, если
createBidirectionalStream()вызывается, покаWebTransportзакрыт или завершён неудачно.
Примеры
Инициализация функции для получения ссылок на свойства WebTransportBidirectionalStream.readable и WebTransportBidirectionalStream.writable. Эти ссылки на WebTransportReceiveStream и WebTransportSendStream экземпляры, которые являются читаемыми и записываемыми потоками, используемыми для чтения и записи на сервер.
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;
// ...
}
Чтение из WebTransportReceiveStream может быть выполнено следующим образом:
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);
}
Спецификации
Совместимость браузеров
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
createBidirectionalStream |
97 | 97 | 114 | 83 | Нет | 97 | 114 | 68 | Нет | 18.0 | 97 |
options_sendOrder_parameter |
Нет | Нет | 119 | Нет | Нет | Нет | 119 | Нет | Нет | Нет | Нет |
См. также
© 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/WebTransport/createBidirectionalStream