Spec-Zone.ru › Web APIs

WebTransport: метод createBidirectionalStream()

Ограниченное использование

Эта функция не является базовой, так как она не работает в некоторых из наиболее широко используемых браузеров.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.

Примечание: Эта функция доступна в Web Workers.

Метод createBidirectionalStream() интерфейса WebTransport асинхронно открывает и возвращает двунаправленный поток.

Метод возвращает Promise, который разрешается объектом WebTransportBidirectionalStream, имеющим свойства readable и writable, которые могут использоваться для надёжного чтения и записи на сервер. «Надёжное» означает, что гарантируется передача и порядок данных. Это обеспечивает более медленную доставку (хотя и быстрее, чем с WebSockets), чем datagrams, но необходимо в ситуациях, где важны надёжность и порядок, например, в приложениях чата.

Относительный порядок, в котором очереди байтов опорожняются из созданных потоков, можно указать с помощью параметра sendOrder. Если он задан, очереди байтов в потоках с более высоким порядком отправки гарантированно будут отправлены до очереди байтов для потоков с более низким порядком отправки. Если номер порядка не задан, порядок отправки байтов зависит от реализации. Однако следует учесть, что, хотя байты из потоков с более высоким порядком отправки отправляются первыми, они могут не прибыть первыми.

Синтаксис

createBidirectionalStream()
createBidirectionalStream(options)

Параметры

options Необязательно

Объект, который может иметь следующие свойства:

sendOrder Необязательно

Целое значение, определяющее приоритет отправки этого потока относительно других потоков, для которых это значение было установлено. Очереди байтов отправляются первыми для потоков с более высоким значением. Если не задано, порядок отправки зависит от реализации.

Возвращаемое значение

A Promise, который разрешается объектом WebTransportBidirectionalStream.

Исключения

InvalidStateError DOMException

Выбрасывается, если 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);
}

Спецификации

Спецификация
WebTransport
# dom-webtransport-createbidirectionalstream

Совместимость браузеров

Рабочий стол Мобильные устройства
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 Нет Нет Нет Нет

См. также

  • Использование WebTransport
  • WebTransport.createUnidirectionalStream()
  • API WebSockets
  • API потоков
  • WebTransport через HTTP/3

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API