Spec-Zone.ru › Web APIs

RTCDtlsTransport

Базовая Широко доступная *

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с января 2020 года.

* Некоторые части этой функции могут иметь различный уровень поддержки.

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

Интерфейс RTCDtlsTransport предоставляет доступ к информации о транспорте протокола Datagram Transport Layer Security (DTLS), по которому пакеты RTCPeerConnection RTP и RTCP отправляются и принимаются его объектами RTCRtpSender и RTCRtpReceiver.

Объект RTCDtlsTransport также используется для предоставления информации о пакетах SCTP, передаваемых и принимаемых каналами данных подключения каналов данных.

Функции транспорта DTLS включают добавление безопасности к базовому транспорту; интерфейс RTCDtlsTransport может использоваться для получения информации о базовом транспорте и добавленной безопасности, обеспечиваемой слоем DTLS.

EventTarget RTCDtlsTransport

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

Также наследует свойства от EventTarget.

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

Возвращает ссылку на базовый объект RTCIceTransport.

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

Возвращает строку, описывающую состояние базового транспорта протокола Datagram Transport Layer Security (DTLS). Может принимать следующие значения: new, connecting, connected, closed, или failed.

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

Также наследует методы от EventTarget.

getRemoteCertificates()

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

События

error

Отправляется при возникновении ошибки на уровне транспорта в RTCPeerConnection.

statechange

Отправляется при изменении состояния state транспорта DTLS.

Описание

Распределение транспортов DTLS

Объекты RTCDtlsTransport создаются, когда приложение вызывает либо setLocalDescription(), либо setRemoteDescription(). Количество созданных транспортов DTLS и способ их использования зависят от режима объединения, используемого при создании RTCPeerConnection.

Используется ли объединение, зависит от того, что другой участник может договориться. Все браузеры поддерживают объединение, поэтому когда оба участника — браузеры, можно быть уверенным, что будет использовано объединение.

Однако некоторые устаревшие конечные точки, не являющиеся браузерами, могут не поддерживать объединение. Чтобы иметь возможность договориться с такими конечными точками (или полностью исключить их), при создании подключения может быть указано свойство bundlePolicy. Свойство bundlePolicy позволяет управлять тем, как договариваться с этими устаревшими конечными точками. По умолчанию используется политика "balanced", которая обеспечивает баланс между производительностью и совместимостью.

Например, чтобы создать подключение с максимальным уровнем объединения:

const rtcConfig = {
  bundlePolicy: "max-bundle",
};

const pc = new RTCPeerConnection(rtcConfig);

Объединение позволяет использовать один RTCDtlsTransport для переноса данных для нескольких транспортов более высокого уровня, таких как несколько RTCRtpTransceiver.

Когда не используется BUNDLE

Когда подключение создается без использования BUNDLE, каждый компонент RTP или RTCP каждого RTCRtpTransceiver имеет свой собственный RTCDtlsTransport; то есть каждый RTCRtpSender и RTCRtpReceiver имеет свой собственный транспорт, и все объекты RTCDataChannel используют отдельный транспорт, предназначенный для SCTP.

Когда используется BUNDLE

Когда подключение использует BUNDLE, каждый объект RTCDtlsTransport представляет собой группу объектов RTCRtpTransceiver. Если подключение было создано в режиме max-compat, каждый транспорт отвечает за обработку всех сообщений для определенного типа медиа (аудио, видео или канала данных). Таким образом, подключение с любым количеством аудио- и видеоканалов всегда будет иметь ровно один транспорт DTLS для аудио- и один для видеосвязи.

Поскольку транспорты устанавливаются на ранней стадии процесса переговоров, скорее всего, до их создания не будет известно, поддерживает ли удалённый участник объединение. По этой причине иногда сначала создаются отдельные транспорты для каждого трека, а затем они объединяются, когда станет известно, что объединение возможно. Если ваш код напрямую обращается к RTCRtpSender и/или RTCRtpReceiver, вы можете столкнуться с ситуациями, когда они первоначально разделены, а затем половина или больше из них закрывается, и отправители и получатели обновляются для ссылки на соответствующие оставшиеся объекты RTCDtlsTransport.

Каналы данных

Каналы RTCDataChannel используют протокол SCTP для связи. Все каналы данных подключения одного участника используют один RTCSctpTransport, находящийся в свойстве sctp подключения.

В свою очередь, транспорт RTCDtlsTransport, используемый для безопасной инкапсуляции SCTP-связи каналов данных, можно найти в свойстве transport объекта RTCSctpTransport.

Примеры

В этом примере представлена функция tallySenders(), которая перебирает отправители RTCRtpSender объекта RTCPeerConnection, подсчитывая, сколько из них находятся в различных состояниях. Функция возвращает объект, содержащий свойства, значения которых указывают, сколько отправителей находится в каждом состоянии.

let pc = new RTCPeerConnection({ bundlePolicy: "max-bundle" });

// …

function tallySenders(pc) {
  let results = {
    transportMissing: 0,
    connectionPending: 0,
    connected: 0,
    closed: 0,
    failed: 0,
    unknown: 0,
  };

  let senderList = pc.getSenders();
  senderList.forEach((sender) => {
    let transport = sender.transport;

    if (!transport) {
      results.transportMissing++;
    } else {
      switch (transport.state) {
        case "new":
        case "connecting":
          results.connectionPending++;
          break;
        case "connected":
          results.connected++;
          break;
        case "closed":
          results.closed++;
          break;
        case "failed":
          results.failed++;
          break;
        default:
          results.unknown++;
          break;
      }
    }
  });
  return results;
}

Обратите внимание, что в данном коде состояния new и connecting обрабатываются как единый статус connectionPending в возвращаемом объекте.

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

Спецификация
WebRTC: Взаимодействие в режиме реального времени в браузерах
# dom-rtcdtlstransport

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

Стационарный компьютер Мобильный телефон
Chrome Edge Firefox Opera Safari Chrome для Android Firefox для Android Opera для Android Safari на IOS Samsung Internet WebView для Android
RTCDtlsTransport 72 12 82 60 15.4 72 82 50 15.4 11.0 72
error_event 72 12 Нет 60 15.4 72 Нет 50 15.4 11.0 72
getRemoteCertificates 72 12 Нет 60 15.4 72 Нет 50 15.4 11.0 72
iceTransport 72 7915–79 125 60 15.4 72 125 50 15.4 11.0 72
state 72 12 82 60 15.4 72 82 50 15.4 11.0 72
statechange_event 72 7912–79 82 60 15.4 72 82 50 15.4 11.0 72

См. также

  • RTCRtpSender.transport и RTCRtpReceiver.transport
  • RTCSctpTransport.transport

© 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/RTCDtlsTransport

Spec-Zone.ru

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