RTCPeerConnection: событие icecandidateerror
Событие API WebRTC icecandidateerror отправляется в RTCPeerConnection, если при выполнении переговоров ICE возникает ошибка через сервер STUN или TURN. Объект события имеет тип RTCPeerConnectionIceErrorEvent и содержит информацию об ошибке с некоторыми подробностями.
Это событие не может быть отменено и не распространяется.
Синтаксис
Используйте имя события в методах, таких как addEventListener(), или задайте свойство обработчика события.
addEventListener("icecandidateerror", (event) => {});
onicecandidateerror = (event) => {};
Тип события
Объект RTCPeerConnectionIceErrorEvent. Наследуется от Event.
Свойства события
Интерфейс RTCPeerConnectionIceErrorEvent включает свойства, присутствующие в интерфейсе Event, а также следующие свойства:
-
addressТолько для чтения -
Строка, содержащая локальный IP-адрес, используемый для связи с сервером STUN или TURN, используемым для переговоров о подключении, или
nullесли локальный IP-адрес еще не был предоставлен в качестве части локального кандидата ICE. -
errorCodeТолько для чтения -
Целое беззнаковое число, указывающее численный код ошибки STUN, возвращенный сервером STUN или TURN. Если ни один кандидат хоста не может связаться с сервером, это свойство устанавливается в число 701, которое находится за пределами диапазона допустимых кодов ошибок STUN. Ошибка 701 генерируется только один раз на URL сервера и только при
iceGatheringStateв состоянииgathering. -
errorTextТолько для чтения -
Строка, содержащая текстовое сообщение причины ошибки STUN, возвращенное сервером STUN или TURN. Если связь с сервером STUN или TURN не может быть установлена вообще, эта строка будет браузерно-специфичной строкой, объясняющей ошибку.
-
portТолько для чтения -
Целое беззнаковое число, представляющее номер порта, по которому происходит общение с сервером STUN или TURN, используя IP-адрес, указанный в
address.nullесли подключение не установлено (то есть, еслиaddressравноnull). -
urlТолько для чтения -
Строка, указывающая URL-адрес сервера STUN или TURN, с которым произошла ошибка.
Описание
Свойство errorCode объекта ошибки — один из числовых кодов ошибок STUN. Существует одна дополнительная ошибка, специфичная для WebRTC, которая находится вне диапазона допустимых кодов ошибок STUN: 701. Ошибка 701 указывает, что ни один из кандидатов ICE не смог успешно связаться с сервером STUN или TURN.
Ошибка 701 генерируется только один раз на URL сервера из списка доступных серверов STUN или TURN, предоставленных при создании RTCPeerConnection. Эти ошибки возникают только при состоянии сбора ICE соединения в состоянии gathering.
Пример
В следующем примере устанавливается обработчик для icecandidateerror на RTCPeerConnection pc. Этот обработчик ищет конкретно ошибки 701, которые указывают, что кандидаты не смогли связаться с сервером STUN или TURN.
В этом случае URL сервера и сообщение об ошибке передаются в функцию reportConnectFail() для регистрации или вывода сбоя подключения.
pc.addEventListener("icecandidateerror", (event) => {
if (event.errorCode === 701) {
reportConnectFail(event.url, event.errorText);
}
});
Обратите внимание, что если при создании соединения предоставляется несколько серверов STUN и/или TURN, эта ошибка может произойти более одного раза, если больше одного из этих серверов откажет. Каждый предоставленный сервер проверяется до тех пор, пока не будет установлено подключение.
Спецификации
| Спецификация |
|---|
| WebRTC: Real-Time Communication in Browsers # dom-rtcpeerconnection-onicecandidateerror |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
icecandidateerror_event |
77 | 79 | Нет | 64 | 14.1 | 77 | Нет | 55 | 14.5 | 12.0 | 77 |
© 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/icecandidateerror_event