Spec-Zone.ru › Web APIs

WebTransport

Ограниченная доступность

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

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

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

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

Интерфейс WebTransport API WebTransport предоставляет возможность пользовательскому агенту подключаться к серверу HTTP/3, инициировать надёжный и ненадежный транспорт в одном или обоих направлениях и закрывать соединение, когда оно больше не требуется.

Конструктор

WebTransport()

Создаёт новый экземпляр объекта WebTransport.

Свойства экземпляра

closed Только для чтения

Возвращает промис, который выполняется, когда транспорт закрыт.

datagrams Только для чтения

Возвращает экземпляр WebTransportDatagramDuplexStream, который может использоваться для отправки и получения дейтаграмм.

congestionControl Только для чтения Экспериментальная

Возвращает строку, которая указывает предпочтение приложения для высокой пропускной способности или низкой задержки при отправке данных.

incomingBidirectionalStreams Только для чтения

Представляет один или несколько двунаправленных потоков, открытых сервером. Возвращает ReadableStream объектов WebTransportBidirectionalStream. Каждый из них может быть использован для чтения данных с сервера и записи данных обратно на него.

incomingUnidirectionalStreams Только для чтения

Представляет один или несколько однонаправленных потоков, открытых сервером. Возвращает ReadableStream объектов WebTransportReceiveStream. Каждый из них может быть использован для чтения данных с сервера.

ready Только для чтения

Возвращает промис, который выполняется, когда транспорт готов к использованию.

reliability Только для чтения Экспериментальная

Возвращает строку, которая указывает, поддерживает ли соединение только надёжные каналы передачи данных или также поддерживает ненадежные каналы передачи данных (такие как UDP).

Методы экземпляра

close()

Закрывает текущую сессию WebTransport.

createBidirectionalStream()

Асинхронно открывает двунаправленный поток (WebTransportBidirectionalStream), который можно использовать для чтения из и записи в сервер.

createUnidirectionalStream()

Асинхронно открывает однонаправленный поток (WritableStream), который можно использовать для записи на сервер.

getStats() Экспериментальная

Асинхронно возвращает Promise, который выполняется с объектом, содержащим статистику подключения HTTP/3.

Примеры

Пример кода ниже показывает, как подключиться к серверу HTTP/3, передав его URL в конструктор WebTransport(). Обратите внимание, что схема должна быть HTTPS, а номер порта должен быть явно указан. После выполнения промиса WebTransport.ready вы можете начать использовать соединение.

async function initTransport(url) {
  // Initialize transport connection
  const transport = new WebTransport(url);

  // The connection can be used once ready fulfills
  await transport.ready;
  return transport;
}

Вы можете отреагировать на закрытие соединения, дождавшись выполнения промиса WebTransport.closed. Ошибки, возвращаемые операциями WebTransport, имеют тип WebTransportError и содержат дополнительные данные помимо стандартного набора DOMException.

Метод closeTransport() ниже показывает возможное реализацию. Внутри блока try...catch он использует await, чтобы дождаться выполнения или отклонения промиса closed, а затем сообщает, было ли закрытие соединения преднамеренным или по ошибке.

async function closeTransport(transport) {
  // Respond to connection closing
  try {
    await transport.closed;
    console.log(`The HTTP/3 connection to ${url} closed gracefully.`);
  } catch (error) {
    console.error(`The HTTP/3 connection to ${url} closed due to ${error}.`);
  }
}

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

// Use the transport
async function useTransport(url) {
  const transport = await initTransport(url);

  // Use the transport object to send and receive data
  // ...

  // When done, close the transport
  await closeTransport(transport);
}

const url = "https://example.com:4999/wt";
useTransport(url);

Другие примеры кода можно найти на страницах отдельных свойств и методов.

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

Спецификация
WebTransport
# web-transport

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

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
WebTransport 97 97 114 83 Нет 97 114 68 Нет 18.0 97
WebTransport 97 97 114 83 Нет 97 114 68 Нет 18.0 97
byob_readers 109 109 114 95 Нет 109 114 74 Нет 21.0 109
close 97 97 114 83 Нет 97 114 68 Нет 18.0 97
closed 97 97 114 83 Нет 97 114 68 Нет 18.0 97
congestionControl Нет Нет 114 Нет Нет Нет 114 Нет Нет Нет Нет
createBidirectionalStream 97 97 114 83 Нет 97 114 68 Нет 18.0 97
createUnidirectionalStream 97 97
114Возвращает WritableStream вместо WebTransportSendStream.
83 Нет 97
114Возвращает WritableStream вместо WebTransportSendStream.
68 Нет 18.0 97
datagrams 97 97 114 83 Нет 97 114 68 Нет 18.0 97
getStats Нет Нет
114Метод определён, но выбрасывает ошибку «не реализовано».
Нет Нет Нет
114Метод определён, но выбрасывает ошибку «не реализовано».
Нет Нет Нет Нет
incomingBidirectionalStreams 97 97 114 83 Нет 97 114 68 Нет 18.0 97
incomingUnidirectionalStreams 97 97 114 83 Нет 97 114 68 Нет 18.0 97
ready 97 97 114 83 Нет 97 114 68 Нет 18.0 97
reliability Нет Нет 114 Нет Нет Нет 114 Нет Нет Нет Нет

См. также

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

Spec-Zone.ru

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