RTCIceCandidatePairStats
Базовая Широко поддерживаемая *
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузера. Она доступна в браузерах с января 2020 года.
* Некоторые части этой функции могут иметь различный уровень поддержки.
Словарь RTCIceCandidatePairStats API WebRTC используется для отчётности о статистике, которая даёт представление о качестве и производительности RTCPeerConnection при подключении и конфигурации, как описано для указанной пары кандидатов ICE.
Статистику можно получить, перебирая RTCStatsReport, возвращаемый RTCPeerConnection.getStats(), пока не будет найдена запись с type "candidate-pair".
Свойства экземпляра
-
availableIncomingBitrateНеобязательно -
Число, представляющее доступную входящую пропускную способность сети. Оно сообщает общее количество бит в секунду, доступных для всех входящих RTP-потоков кандидатской пары. Оно не учитывает размер накладных расходов протокола Internet Protocol (IP), а также другие транспортные уровни, такие как TCP или UDP.
-
availableOutgoingBitrateНеобязательно -
Число, представляющее приблизительную доступную исходящую пропускную способность сети. Оно сообщает общее количество бит в секунду, доступных для всех исходящих RTP-потоков кандидатской пары. Оно не учитывает размер накладных расходов IP, а также другие транспортные уровни, такие как TCP или UDP.
-
bytesDiscardedOnSendНеобязательно Экспериментальное -
Целое число, представляющее общее количество байтов, отброшенных из-за ошибок сокета для этой пары кандидатов.
-
bytesReceivedНеобязательно -
Целое число, представляющее общее количество байтов полезной нагрузки, полученных для этой пары кандидатов.
-
bytesSentНеобязательно -
Целое число, представляющее общее количество байтов полезной нагрузки, отправленных для этой пары кандидатов (общее количество отправленных байтов без учёта заголовков, заполнения или других накладных расходов протокола).
-
consentRequestsSentНеобязательно Экспериментальное -
Целое число, представляющее общее количество запросов согласия STUN для этой пары кандидатов.
-
currentRoundTripTimeНеобязательно -
Число, представляющее общее время в секундах, прошедшее между последним отправленным запросом STUN и получением ответа. Это может быть основано на запросах, которые участвовали в подтверждении разрешения на открытие соединения.
-
lastPacketReceivedTimestampНеобязательно -
Значение
DOMHighResTimeStamp, указывающее время получения последнего пакета локальным узлом от удалённого узла для данной пары кандидатов. Отметки времени не сохраняются для пакетов STUN. -
lastPacketSentTimestampНеобязательно -
Значение
DOMHighResTimeStamp, указывающее время отправки последнего пакета локальным узлом удалённому узлу для данной пары кандидатов. Отметки времени не сохраняются для пакетов STUN. -
localCandidateIdНеобязательно -
Строка, представляющая уникальный идентификатор, соответствующий
RTCIceCandidateиз данных, включённых в объектRTCIceCandidateStats, предоставляющий статистику для локального кандидата пары кандидатов. -
nominatedНеобязательно -
Логическое значение, которое, если
true, указывает, что пара кандидатов, описанная этим объектом, была предложена для использования и будет (или была) использована, если её приоритет является самым высоким среди номинированных пар кандидатов. Подробнее см. RFC 5245, раздел 7.1.3.2.4. -
packetsDiscardedOnSendНеобязательно Экспериментальное -
Целое число, представляющее общее количество пакетов, отброшенных из-за ошибок сокета для этой пары кандидатов.
-
packetsReceivedНеобязательно Экспериментальное -
Целое число, представляющее общее количество полученных пакетов для этой пары кандидатов.
-
packetsSentНеобязательно Экспериментальное -
Целое число, представляющее общее количество отправленных пакетов для этой пары кандидатов.
-
remoteCandidateIdНеобязательно -
Строка, содержащая уникальный идентификатор удалённого кандидата, на основе данных которого был создан объект
RTCIceCandidateStats, описывающий удалённый конец подключения. -
requestsReceivedНеобязательно -
Целое число, представляющее общее количество полученных запросов проверки подключения, включая повторные передачи. Это значение включает как запросы проверки подключения, так и запросы проверки согласия STUN.
-
requestsSentНеобязательно -
Целое число, представляющее общее количество отправленных запросов проверки подключения, без учёта повторных передач.
-
responsesReceivedНеобязательно -
Целое число, представляющее общее количество полученных ответов на запросы проверки подключения.
-
responsesSentНеобязательно -
Целое число, представляющее общее количество отправленных ответов на запросы проверки подключения. Это включает как запросы проверки подключения, так и запросы проверки согласия STUN.
-
stateНеобязательно -
Строка, которая указывает состояние соединения между двумя кандидатами.
-
totalRoundTripTimeНеобязательно -
Число, обозначающее общее время в секундах, прошедшее между отправкой запросов STUN и получением ответов на них для всех таких запросов, отправленных для этой пары кандидатов. Это включает как запросы проверки подключения, так и запросы проверки согласия. Вы можете вычислить среднее время задержки (RTT), разделив это значение на
responsesReceived. -
transportIdНеобязательно -
Строка, уникально идентифицирующая
RTCIceTransport, который был проверен для получения транспортной статистики (как вRTCTransportStats), используемой для создания этого объекта.
Общие свойства экземпляра
Следующие свойства общие для всех объектов статистики WebRTC.
id-
Строка, уникально идентифицирующая объект, за которым ведется мониторинг для получения этого набора статистики.
timestamp-
Объект
DOMHighResTimeStamp, указывающий время, в которое была взята выборка для этого объекта статистики. type-
Строка со значением
"candidate-pair", указывающая тип статистики, содержащейся в объекте.
Устаревшие свойства
Следующие свойства были удалены из спецификации и больше не должны использоваться. Необходимо обновить любой существующий код, чтобы избегать их использования как можно скорее. См. таблицу совместимости для получения информации о поддержке этих свойств в разных браузерах.
-
priorityУстаревшее Необязательно Нестандартное -
Целочисленное значение, указывающее приоритет кандидата пары.
-
readableУстаревшее Необязательно Нестандартное -
Булево значение, указывающее, может ли данные отправляться по соединению, описанному парой кандидатов.
-
writableУстаревшее Необязательно Нестандартное -
Булево значение, указывающее, может ли данные приниматься по соединению, описанному парой кандидатов.
Нестандартные свойства
-
selectedНестандартное Необязательно -
Специфичное для Firefox булево значение, которое равно
true, если пара кандидатов, описанных этим объектом, является текущей в использовании. Согласованный со спецификацией способ определения выбранной пары кандидатов — это поиск объекта статистики типаtransport, который является объектомRTCTransportStats. СвойствоselectedCandidatePairIdэтого объекта указывает, используется ли указанный транспорт.
Примечания по использованию
Текущую активную пару ICE кандидатов (если есть) можно получить, вызвав метод RTCIceTransport getSelectedCandidatePair(), который возвращает объект RTCIceCandidatePair, или null, если пара не выбрана. Активная пара кандидатов описывает текущую конфигурацию двух сторон RTCPeerConnection.
Любая пара кандидатов, не являющаяся активной парой кандидатов для транспорта, удаляется, если RTCIceTransport выполняет перезапуск ICE, в результате чего состояние state ICE-транспорта возвращается к значению new, и переговорный процесс запускается заново. Дополнительная информация содержится в разделе Перезапуск ICE.
Пример
В этом примере вычисляется среднее время, прошедшее между проверками подключения.
if (rtcStats && rtcStats.type === "candidate-pair") {
let elapsed =
(rtcStats.lastRequestTimestamp - rtcStats.firstRequestTimestamp) /
rtcStats.requestsSent;
console.log(`Average time between ICE connectivity checks: ${elapsed} ms.`);
}
Код начинает с проверки rtcStats, чтобы определить, является ли его свойство type равным candidate-pair. Если это так, то мы знаем, что rtcStats фактически является объектом RTCIceCandidatePairStats. Тогда мы можем вычислить среднее время, прошедшее между проверками STUN подключения, и вывести эту информацию.
Спецификации
Совместимость с браузерами
| Десктопные | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
RTCIceCandidatePairStats |
58 | 79 | 29 | 45 | 11 | 58 | 29 | 43 | 11 | 7.0 | 58 |
|---|---|---|---|---|---|---|---|---|---|---|---|
availableOutgoingBitrate |
58 | 79 | Нет | 45 | 11–16.2 | 58 | Нет | 43 | 11–16.2 | 7.0 | 58 |
bytesDiscardedOnSend |
96 | 96 | Нет | 82 | Нет | 96 | Нет | 67 | Нет | 17.0 | 96 |
bytesReceived |
58 | 79 | 56 | 45 | 11 | 58 | 56 | 43 | 11 | 7.0 | 58 |
bytesSent |
58 | 79 | 56 | 45 | 11 | 58 | 56 | 43 | 11 | 7.0 | 58 |
consentRequestsSent |
80 | 80 | Нет | 67 | Нет | 80 | Нет | 57 | Нет | 13.0 | 80 |
currentRoundTripTime |
7158 | 7979 | Нет | 5845 | 11–16.2 | 7158 | Нет | 5043 | 11–16.2 | 10.07.0 | 7158 |
id |
80 | 80 | 72 | 67 | 13.1 | 80 | 79 | 57 | 13.4 | 13.0 | 80 |
lastPacketReceivedTimestamp |
109 | 109 | 56 | 95 | Нет | 109 | 56 | 74 | Нет | 21.0 | 109 |
lastPacketSentTimestamp |
109 | 109 | 56 | 95 | Нет | 109 | 56 | 74 | Нет | 21.0 | 109 |
localCandidateId |
58 | 79 | 29 | 45 | 11 | 58 | 29 | 43 | 11 | 7.0 | 58 |
nominated |
58 | 79 | 56 | 45 | 11 | 58 | 56 | 43 | 11 | 7.0 | 58 |
packetsDiscardedOnSend |
96 | 96 | Нет | 82 | Нет | 96 | Нет | 67 | Нет | 17.0 | 96 |
packetsReceived |
96 | 96 | Нет | 82 | Нет | 96 | Нет | 67 | Нет | 17.0 | 96 |
packetsSent |
96 | 96 | Нет | 82 | Нет | 96 | Нет | 67 | Нет | 17.0 | 96 |
priority |
58 | 79 | 4229 | 45 | 11–17 | 58 | 4229 | 43 | 11–17 | 7.0 | 58 |
remoteCandidateId |
58 | 79 | 29 | 45 | 11 | 58 | 29 | 43 | 11 | 7.0 | 58 |
requestsReceived |
58 | 79 | Нет | 45 | 11 | 58 | Нет | 43 | 11 | 7.0 | 58 |
requestsSent |
58 | 79 | Нет | 45 | 11 | 58 | Нет | 43 | 11 | 7.0 | 58 |
responsesReceived |
58 | 79 | Нет | 45 | 11 | 58 | Нет | 43 | 11 | 7.0 | 58 |
responsesSent |
58 | 79 | Нет | 45 | 11 | 58 | Нет | 43 | 11 | 7.0 | 58 |
state |
58 | 79 | 29 | 45 | 11 | 58 | 29 | 43 | 11 | 7.0 | 58 |
timestamp |
80 | 80 | 72 | 67 | 13.1 | 80 | 79 | 57 | 13.4 | 13.0 | 80 |
totalRoundTripTime |
7158 | 7979 | Нет | 5845 | 11 | 7158 | Нет | 5043 | 11 | 10.07.0 | 7158 |
transportId |
58 | 79 | 5629 | 45 | 11 | 58 | 5629 | 43 | 11 | 7.0 | 58 |
type |
80 | 80 | 72 | 67 | 13.1 | 80 | 79 | 57 | 13.4 | 13.0 | 80 |
© 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/RTCIceCandidatePairStats