Spec-Zone.ru › Web APIs

RTCPeerConnection: метод setConfiguration()

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

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

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

Метод setConfiguration() интерфейса RTCPeerConnection устанавливает текущую конфигурацию соединения на основе значений, указанных в переданном объекте. Это позволяет изменить используемые серверы ICE и политики транспорта.

Наиболее распространённый случай использования этого метода (и даже тогда, вероятно, не очень распространённый) — замена набора серверов ICE. Два возможных сценария, в которых это может потребоваться:

  • Объект RTCPeerConnection был создан без указания серверов ICE. Если, например, конструктор RTCPeerConnection() был вызван без параметров, вам необходимо будет вызвать setConfiguration() для добавления серверов ICE перед началом переговоров ICE.
  • Необходима повторная установка соединения, и по какой-то причине требуется использовать другой набор серверов ICE. Возможно, пользователь переместился в новый регион, поэтому для использования новых региональных серверов ICE необходимо вызвать setConfiguration(), затем инициировать перезапуск ICE.

Примечание: После установки информации об идентификации соединения изменить её уже нельзя.

Синтаксис

setConfiguration(configuration)

Параметры

configuration

Объект, предоставляющий параметры для установки. Изменения не добавляются; вместо этого новые значения полностью заменяют существующие. Более подробную информацию о допустимых параметрах см. в RTCPeerConnection().

Исключения

InvalidAccessError DOMException

Выбрасывается, если один или несколько URL-адресов, указанных в configuration.iceServers, являются сервером TURN, но полная информация для входа не предоставлена (т. е., отсутствует либо username, либо credential, или если credentialType является "password", а credential не является строкой). Это препятствует успешному входу в систему на сервер.

InvalidModificationError DOMException

Выбрасывается, если configuration содержит изменённую информацию об идентификации, но соединение уже имеет заданную информацию об идентификации. Это происходит, если configuration.peerIdentity или configuration.certificates установлены и их значения отличаются от текущей конфигурации. Это также может быть вызвано изменениями в configuration.bundlePolicy или configuration.rtcpMuxPolicy, или в configuration.iceCandidatePoolSize после вызова RTCPeerConnection.setLocalDescription().

InvalidStateError DOMException

Выбрасывается, если соединение RTCPeerConnection закрыто.

SyntaxError DOMException

Выбрасывается, если configuration.iceServers не содержит URL-адресов или одно из значений в списке является недопустимым.

NotSupportedError DOMException

Выбрасывается, если configuration.iceServers содержит URL-адрес со схемой, которая не поддерживается.

Пример

В этом примере уже определено, что необходим перезапуск ICE и переговоры должны быть выполнены с использованием другого сервера ICE.

const restartConfig = {
  iceServers: [
    {
      urls: "turn:asia.turn-server.net",
      username: "allie@oopcode.com",
      credential: "topsecretpassword",
    },
  ],
};

myPeerConnection.setConfiguration(restartConfig);

myPeerConnection
  .createOffer({ iceRestart: true })
  .then((offer) => myPeerConnection.setLocalDescription(offer))
  .then(() => {
    // send the offer to the other peer using the signaling server
  })
  .catch(window.reportError);

Сначала создаётся новый объект restartConfig, указывающий на новый сервер ICE и его учётные данные. Затем он передаётся в setConfiguration(). Переговоры ICE перезапускаются вызовом createOffer(), задавая true в качестве значения параметра iceRestart. Далее процесс обрабатывается обычным способом, устанавливая локальное описание на полученное предложение и отправляя это предложение другому участнику.

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

Спецификация
WebRTC: Real-Time Communication in Browsers
# dom-rtcpeerconnection-setconfiguration

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet WebView Android
setConfiguration 48 79 99 35 11 48 99 35 11 6.0 48

См. также

  • RTCPeerConnection.getConfiguration()
  • RTCPeerConnection()
  • RTCPeerConnection

© 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/RTCPeerConnection/setConfiguration

Spec-Zone.ru

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