RTCTransportStats
Словарь RTCTransportStats API WebRTC предоставляет информацию о канале связи (RTCDtlsTransport и его основе RTCIceTransport), используемом конкретной парой кандидатов.
Функция BUNDLE — это расширение SDP, которое позволяет договориться об использовании одного канала связи для отправки и получения медиаданных, описанных несколькими медиаописаниями SDP. Если удалённый конец знаком с этой функцией, все MediaStreamTrack и каналы данных объединяются в один канал связи по завершении переговоров. Это верно для современных браузеров, но если подключение осуществляется к более старому концу, не поддерживающему BUNDLE, могут использоваться отдельные каналы связи для разных медиаданных. Политика использования в переговорах настраивается в RTCPeerConnection конструкторе.
Эти статистические данные можно получить, итеративно обрабатывая RTCStatsReport, возвращаемые RTCPeerConnection.getStats(), пока не будет найден отчёт с type типа transport.
Свойства экземпляра
bytesReceivedНеобязательно-
Общее количество полученных байтов данных по этому каналу связи (байты данных, не включая заголовки, заполнители или проверки подключенности ICE).
bytesSentНеобязательно-
Общее количество отправленных байтов данных по этому каналу связи (отправленные байты, не включая заголовки, заполнители или проверки подключенности ICE).
dtlsCipherНеобязательно-
Строка, указывающая имя набора шифров, используемого для канала связи DTLS, как определено в столбце «Описание» в разделе TLS Cipher Suites в реестре наборов шифров IANA. Например
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256". dtlsRoleНеобязательно Экспериментальная-
Роль DTLS связанного
RTCPeerConnection. Это может быть:clientserver-
unknown(до начала переговоров DTLS).
dtlsState-
Строка, указывающая текущее состояние
stateбазовогоRTCDtlsTransport. Это может быть: iceLocalUsernameFragmentНеобязательно Экспериментальная-
Строка, указывающая фрагмент локального имени пользователя, используемый в процедурах проверки сообщений для этого канала связи. Это то же значение, что и локальный
RTCIceCandidate.usernameFragment, и изменится, если подключение будет переподключено. iceRoleНеобязательно Экспериментальная-
Строка, указывающая роль ICE
roleбазовогоRTCDtlsTransport.iceTransport. Это может быть: iceStateНеобязательно Экспериментальная-
Строка, указывающая текущее состояние
stateбазовогоRTCIceTransport. Это может быть: selectedCandidatePairIdНеобязательно-
Строка, содержащая уникальный идентификатор объекта, который был проанализирован для получения
RTCIceCandidatePairStats, связанного с этим каналом связи. localCertificateIdНеобязательно-
Строка, содержащая идентификатор локального сертификата, используемого этим каналом связи. Присутствует только для каналов связи DTLS и после переговоров DTLS.
packetsSentНеобязательно Экспериментальная-
Общее количество отправленных пакетов по этому каналу связи.
packetsReceivedНеобязательно Экспериментальная-
Общее количество полученных пакетов по этому каналу связи.
remoteCertificateIdНеобязательно-
Строка, содержащая идентификатор или удалённый сертификат, используемый этим каналом связи. Присутствует только для каналов связи DTLS и после переговоров DTLS.
selectedCandidatePairChangesНеобязательно-
Количество раз, когда выбранная пара кандидатов этого канала связи изменилась. Значение изначально равно нулю и увеличивается всякий раз, когда выбирается или теряется пара кандидатов.
srtpCipherНеобязательно-
Строка, указывающая описательное имя профиля защиты, используемого для канала связи Secure Real-time Transport Protocol (SRTP), как определено в столбце «Профиль» в реестре профилей защиты DTLS-SRTP IANA и RFC5764.
Например,
"AES_CM_128_HMAC_SHA1_80"определяет следующий профиль, гдеmaximum_lifetime— максимальное количество пакетов, которые могут быть защищены одним набором ключей.SRTP_AES128_CM_HMAC_SHA1_80 cipher: AES_128_CM cipher_key_length: 128 cipher_salt_length: 112 maximum_lifetime: 2^31 auth_function: HMAC-SHA1 auth_key_length: 160 auth_tag_length: 80
tlsVersionНеобязательно-
Строка, содержащая переговорённую версию TLS. Присутствует для каналов связи DTLS и только после переговоров DTLS.
Значение берется из рукопожатия DTLS
ServerHello.version, и представлено четырьмя заглавными шестнадцатеричными цифрами, где цифры представляют два байта версии. Однако следует учитывать, что байты могут не отображать непосредственно номера версий. Например, DTLS представляет версию 1.2 как'FEFD'в численных значениях{254, 253}.
Общие свойства экземпляра
Следующие свойства общие для всех статистических объектов WebRTC.
id-
Строка, которая однозначно идентифицирует объект, который отслеживается для создания этого набора статистических данных.
timestamp-
Объект
DOMHighResTimeStamp, указывающий время, в которое была взята выборка для этого статистического объекта. type-
Строка со значением
"transport", указывающая тип статистических данных, содержащихся в объекте.
Примеры
Этот пример демонстрирует функцию, которая возвращает статистику канала связи или null при отсутствии статистических данных.
Функция ожидает результат вызова RTCPeerConnection.getStats(), а затем итеративно обрабатывает возвращаемый RTCStatsReport, чтобы получить только статистику типа "transport". Затем она возвращает статистику или null, используя данные в отчёте.
async function numberOpenConnections (peerConnection) {
const stats = await peerConnection.getStats();
let transportStats = null;
stats.forEach((report) => {
if (report.type === "transport") {
transportStats = report;
break;
}
});
return transportStats
}
Спецификации
Совместимость с браузерами
| Настольный | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
RTCTransportStats |
80 | 80 | No | 67 | 13.1 | 80 | No | 57 | 13.4 | 13.0 | 80 |
bytesReceived |
80 | 80 | No | 67 | 13.1 | 80 | No | 57 | 13.4 | 13.0 | 80 |
bytesSent |
80 | 80 | No | 67 | 13.1 | 80 | No | 57 | 13.4 | 13.0 | 80 |
dtlsCipher |
80 | 80 | No | 67 | 14.1 | 80 | No | 57 | 14.5 | 13.0 | 80 |
dtlsRole |
103 | 103 | No | 89 | No | 103 | No | 71 | No | 20.0 | 103 |
dtlsState |
80 | 80 | No | 67 | 14.1 | 80 | No | 57 | 14.5 | 13.0 | 80 |
iceLocalUsernameFragment |
103 | 103 | No | 89 | No | 103 | No | 71 | No | 20.0 | 103 |
iceRole |
103 | 103 | No | 89 | No | 103 | No | 71 | No | 20.0 | 103 |
iceState |
103 | 103 | No | 89 | No | 103 | No | 71 | No | 20.0 | 103 |
id |
80 | 80 | No | 67 | 13.1 | 80 | No | 57 | 13.4 | 13.0 | 80 |
localCertificateId |
80 | 80 | No | 67 | 13.1 | 80 | No | 57 | 13.4 | 13.0 | 80 |
packetsReceived |
86 | 86 | No | 72 | No | 86 | No | 61 | No | 14.0 | 86 |
packetsSent |
86 | 86 | No | 72 | No | 86 | No | 61 | No | 14.0 | 86 |
remoteCertificateId |
80 | 80 | No | 67 | 13.1 | 80 | No | 57 | 13.4 | 13.0 | 80 |
selectedCandidatePairChanges |
80 | 80 | No | 67 | No | 80 | No | 57 | No | 13.0 | 80 |
selectedCandidatePairId |
80 | 80 | No | 67 | 13.1 | 80 | No | 57 | 13.4 | 13.0 | 80 |
srtpCipher |
80 | 80 | No | 67 | 14.1 | 80 | No | 57 | 14.5 | 13.0 | 80 |
timestamp |
80 | 80 | No | 67 | 13.1 | 80 | No | 57 | 13.4 | 13.0 | 80 |
tlsVersion |
80 | 80 | No | 67 | 14.1 | 80 | No | 57 | 14.5 | 13.0 | 80 |
type |
80 | 80 | No | 67 | 13.1 | 80 | No | 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/RTCTransportStats