Spec-Zone.ru › Web APIs

RTCPeerConnection: метод restartIce()

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

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

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

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

После того как restartIce() возвращает значение, предложение, возвращаемое следующим вызовом createOffer(), автоматически настраивается для запуска перезапуска ICE как на локальном узле (после настройки локального узла), так и на удалённом узле, после отправки предложения через ваш механизм сигнализации и настройки описания удалённым узлом.

restartIce() вызывает событие negotiationneeded на RTCPeerConnection, чтобы сообщить приложению о необходимости выполнить переговоры с помощью своего канала сигнализации.

Если переговоры не завершаются успешно (из-за отката или если входящие предложения находятся в процессе переговоров), RTCPeerConnection запомнит, что вы запросили перезапуск ICE. В следующий раз, когда состояние сигнализации signalingState соединения изменится на stable, соединение вызовет событие negotiationneeded. Этот процесс продолжается до тех пор, пока перезапуск ICE не будет успешно завершён.

Синтаксис

restartIce()

Параметры

Нет.

Возвращаемое значение

Нет (undefined).

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

После вызова restartIce(), следующее предложение, созданное с помощью createOffer(), инициирует перезапуск ICE после отправки удалённому узлу через ваш механизм сигнализации. Перезапуск ICE по существу сбрасывает ICE, чтобы он создавал все новые кандидаты с использованием новых учётных данных. Существующие медиапередачи продолжаются без перерыва во время этого процесса.

Подробную информацию о работе перезапуска ICE см. в разделе Перезапуск ICE и RFC 5245, раздел 9.1.1.1: Спецификация ICE.

Примеры

В этом примере создаётся обработчик события iceconnectionstatechange, который обрабатывает переход в состояние failed путём перезапуска ICE, чтобы повторить попытку.

pc.addEventListener("iceconnectionstatechange", (event) => {
  if (pc.iceConnectionState === "failed") {
    /* possibly reconfigure the connection in some way here */
    /* then request ICE restart */
    pc.restartIce();
  }
});

При наличии этого кода переход в состояние failed во время переговоров ICE вызовет событие negotiationneeded, в ответ на которое ваш код должен переговорить как обычно. Однако, поскольку вы вызвали restartIce(), ваш вызов createOffer(), который происходит в обработчике для negotiationneeded, вызовет перезапуск ICE вместо просто обычных переговоров.

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

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

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
restartIce 77 79 70 64 14.1 77 79 55 14.5 12.0 77

См. также

  • API WebRTC
  • Жизненный цикл сессии WebRTC
  • Сигнализация и видеозвонки

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

Spec-Zone.ru

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