Spec-Zone.ru › Web APIs

RTCPeerConnection: событие iceconnectionstatechange

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

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

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

Событие iceconnectionstatechange отправляется объекту RTCPeerConnection каждый раз, когда состояние соединения ICE изменяется во время процесса переговоров. Новое состояние соединения ICE доступно в свойстве объекта iceConnectionState.

Одна из распространенных задач обработчика события iceconnectionstatechange — запуск повторной инициализации ICE (ICE restart) при изменении состояния на failed.

Это событие не может быть отменено и не распространяется.

Синтаксис

Используйте имя события в методах, таких как addEventListener(), или задайте обработчик события.

addEventListener("iceconnectionstatechange", (event) => {});

oniceconnectionstatechange = (event) => {};

Тип события

Общее Event.

Примечания по использованию

Успешная попытка подключения обычно начинается в состоянии new, затем переходит в checking, затем connected, и, наконец, completed. Однако в определенных ситуациях состояние connected может быть пропущено, что приводит к прямому переходу соединения из состояния checking в completed. Это может произойти, когда только последний проверенный кандидат успешен, а сигналы сбора и окончания кандидатов поступают до завершения успешных переговоров.

Состояние соединения ICE во время повторной инициализации ICE

При обработке повторной инициализации ICE процесс сбора и проверки соединений начинается заново, что приведет к переходу iceConnectionState в connected если повторная инициализация ICE была выполнена, когда соединение находилось в состоянии completed. Если повторная инициализация ICE инициирована, когда соединение находится в переходном состоянии disconnected, состояние переходит в checking, что фактически означает, что процесс переговоров игнорирует тот факт, что соединение временно было потеряно.

Переходы состояний по завершении переговоров

Когда процесс переговоров исчерпал кандидатов для проверки, соединение ICE переходит в одно из двух состояний. Если подходящие кандидаты не были найдены, состояние переходит в failed. Если по меньшей мере один подходящий кандидат был успешно идентифицирован, состояние переходит в completed. Слой ICE принимает это решение после получения сигнала окончания кандидатов, который предоставляется вызовом addIceCandidate() с кандидатом, чье свойство candidate является пустой строкой ("") или путем задания свойства RTCPeerConnection свойство canTrickleIceCandidates в значение false.

Примеры

Обработчик этого события можно добавить, используя свойство oniceconnectionstatechange или с помощью addEventListener() на объекте RTCPeerConnection.

В этом примере настраивается обработчик для события iceconnectionstatechange, чтобы обновить индикатор состояния вызова, используя значение iceConnectionState для создания строки, соответствующей имени CSS-класса, который мы можем назначить индикатору состояния, чтобы он отражал текущее состояние соединения.

pc.addEventListener(
  "iceconnectionstatechange",
  (ev) => {
    let stateElem = document.querySelector("#call-state");
    stateElem.className = `${pc.iceConnectionState}-state`;
  },
  false,
);

Это также можно записать так:

pc.oniceconnectionstatechange = (ev) => {
  let stateElem = document.querySelector("#call-state");
  stateElem.className = `${pc.iceConnectionState}-state`;
};

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

Спецификация
WebRTC: Реальное общение в браузерах
# dom-rtcpeerconnection-oniceconnectionstatechange

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

Рабочие столы Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
iceconnectionstatechange_event 28 15 24 15 11 28 24 15 11 1.5 4.4

См. также

  • API WebRTC
  • RTCPeerConnection
  • RTCPeerConnection.iceConnectionState

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

Spec-Zone.ru

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