RTCPeerConnection: метод setConfiguration()
Базовая Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с января 2020 года.
Метод setConfiguration() интерфейса RTCPeerConnection устанавливает текущую конфигурацию соединения на основе значений, указанных в переданном объекте. Это позволяет изменить используемые серверы ICE и политики транспорта.
Наиболее распространённый случай использования этого метода (и даже тогда, вероятно, не очень распространённый) — замена набора серверов ICE. Два возможных сценария, в которых это может потребоваться:
- Объект
RTCPeerConnectionбыл создан без указания серверов ICE. Если, например, конструкторRTCPeerConnection()был вызван без параметров, вам необходимо будет вызватьsetConfiguration()для добавления серверов ICE перед началом переговоров ICE. - Необходима повторная установка соединения, и по какой-то причине требуется использовать другой набор серверов ICE. Возможно, пользователь переместился в новый регион, поэтому для использования новых региональных серверов ICE необходимо вызвать
setConfiguration(), затем инициировать перезапуск ICE.
Примечание: После установки информации об идентификации соединения изменить её уже нельзя.
Синтаксис
setConfiguration(configuration)
Параметры
configuration-
Объект, предоставляющий параметры для установки. Изменения не добавляются; вместо этого новые значения полностью заменяют существующие. Более подробную информацию о допустимых параметрах см. в
RTCPeerConnection().
Исключения
-
InvalidAccessErrorDOMException -
Выбрасывается, если один или несколько URL-адресов, указанных в
configuration.iceServers, являются сервером TURN, но полная информация для входа не предоставлена (т. е., отсутствует либоusername, либоcredential, или еслиcredentialTypeявляется"password", аcredentialне является строкой). Это препятствует успешному входу в систему на сервер. -
InvalidModificationErrorDOMException -
Выбрасывается, если
configurationсодержит изменённую информацию об идентификации, но соединение уже имеет заданную информацию об идентификации. Это происходит, еслиconfiguration.peerIdentityилиconfiguration.certificatesустановлены и их значения отличаются от текущей конфигурации. Это также может быть вызвано изменениями вconfiguration.bundlePolicyилиconfiguration.rtcpMuxPolicy, или вconfiguration.iceCandidatePoolSizeпосле вызоваRTCPeerConnection.setLocalDescription(). -
InvalidStateErrorDOMException -
Выбрасывается, если соединение
RTCPeerConnectionзакрыто. -
SyntaxErrorDOMException -
Выбрасывается, если
configuration.iceServersне содержит URL-адресов или одно из значений в списке является недопустимым. -
NotSupportedErrorDOMException -
Выбрасывается, если
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. Далее процесс обрабатывается обычным способом, устанавливая локальное описание на полученное предложение и отправляя это предложение другому участнику.
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 |
См. также
© 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