RTCPeerConnection: свойство signalingState
Базовая Широко доступная
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с января 2020 года.
Чтение только свойство signalingState интерфейса RTCPeerConnection возвращает строковое значение, описывающее состояние процесса сигнализации на локальном конце соединения во время подключения или повторного подключения к другому узлу. См. Сигнализацию на странице жизненного цикла сеанса WebRTC.
Поскольку процесс сигнализации представляет собой конечный автомат, возможность проверки того, что ваш код находится в ожидаемом состоянии при получении сообщений, может помочь избежать неожиданных и предотвратимых сбоев. Например, если вы получаете ответ, а signalingState не находится в состоянии "have-local-offer", вы знаете, что что-то не так, так как вы должны получать ответы только после создания предложения, но до получения ответа и передачи его в RTCPeerConnection.setLocalDescription(). Ваш код будет более надежным, если вы будете следить за несоответствиями состояний и обрабатывать их надлежащим образом.
Это значение также может быть полезным во время отладки.
Кроме того, при изменении значения этого свойства событие signalingstatechange отправляется экземпляру RTCPeerConnection.
Значение
Допустимые строковые значения:
stable-
Нет текущего обмена предложениями и ответами. Это может означать, что объект
RTCPeerConnectionновый, в этом случае иlocalDescription, иremoteDescriptionимеют значениеnull; это также может означать, что согласование завершено и соединение установлено. have-local-offer-
Локальный узел вызвал
RTCPeerConnection.setLocalDescription(), передав SDP, представляющий предложение (обычно созданное вызовомRTCPeerConnection.createOffer()), и предложение было успешно применено. have-remote-offer-
Удаленный узел создал предложение и использовал сервер сигнализации для передачи его локальному узлу, который установил это предложение как удалённое описание с помощью вызова
RTCPeerConnection.setRemoteDescription(). have-local-pranswer-
Предложение, отправленное удаленным узлом, было применено, и был создан ответ (обычно вызовом
RTCPeerConnection.createAnswer()) и применён вызовомRTCPeerConnection.setLocalDescription(). Этот предварительный ответ описывает поддерживаемые форматы медиа и т. д., но может не содержать полный набор кандидатов ICE. Дополнительные кандидаты будут доставлены отдельно позже. have-remote-pranswer-
Предварительный ответ был получен и успешно применён в ответ на предложение, ранее отправленное и установленное вызовом
setLocalDescription(). closed-
RTCPeerConnectionбыл закрыт.
Примеры
const pc = new RTCPeerConnection(configuration); const state = pc.signalingState;
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
signalingState |
26 | 15 | 24 | 15 | 11 | 26 | 24 | 14 | 11 | 1.5 | 4.4 |
См. также
© 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/signalingState