Spec-Zone.ru › Web APIs

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

См. также

  • Использование WebTransport
  • 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/WebTransportBidirectionalStream

Spec-Zone.ru

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