RTCTransportStats
Das RTCTransportStats
-Wörterbuch der WebRTC API bietet Informationen über den Transport (RTCDtlsTransport
und dessen zugrundeliegenden RTCIceTransport
), der von einem bestimmten Kandidatenpaar verwendet wird.
Das BUNDLE-Feature ist eine SDP-Erweiterung, die es ermöglicht, einen einzelnen Transport für das Senden und Empfangen von Medien zu nutzen, die durch mehrere SDP-Medienbeschreibungen beschrieben werden. Wenn der Remote-Endpunkt mit diesem Feature vertraut ist, werden alle MediaStreamTrack
und Datenkanäle beim Abschluss der Verhandlung auf einen einzigen Transport gebündelt. Dies gilt für aktuelle Browser, aber wenn die Verbindung zu einem älteren Endpunkt hergestellt wird, der das BUNDLE-Feature nicht kennt, könnten separate Transporte für unterschiedliche Medien verwendet werden. Die zu verwendende Richtlinie für die Verhandlung wird im RTCPeerConnection
-Konstruktor konfiguriert.
Diese Statistiken können abgerufen werden, indem der RTCStatsReport
durchlaufen wird, der von RTCPeerConnection.getStats()
zurückgegeben wird, bis ein Bericht mit dem type
transport
gefunden wird.
Instanz-Eigenschaften
bytesReceived
Optional-
Die Gesamtzahl der Nutzlast-Bytes, die über diesen Transport empfangen wurden (empfangene Bytes, ohne Header, Padding oder ICE-Konnektivitätsprüfungen).
bytesSent
Optional-
Die Gesamtzahl der Nutzlast-Bytes, die über diesen Transport gesendet wurden (gesendete Bytes, ohne Header, Padding oder ICE-Konnektivitätsprüfungen).
dtlsCipher
Optional-
Ein String, der den Namen der für den DTLS-Transport verwendeten Cipher-Suite angibt, wie in der Spalte "Description" in den TLS-Cipher-Suites im IANA cipher suite registry definiert. Zum Beispiel
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"
. dtlsRole
Optional Experimentell-
Die DTLS-Rolle der zugehörigen
RTCPeerConnection
. Dies ist eine der folgenden:client
server
unknown
(bevor die DTLS-Verhandlung beginnt).
dtlsState
-
Ein String, der den aktuellen
state
des zugrunde liegendenRTCDtlsTransport
angibt. Dies ist einer der folgenden: iceLocalUsernameFragment
Optional Experimentell-
Ein String, der das lokale Benutzernamen-Fragment angibt, das in der Nachrichtenvalidierungsprozedur für diesen Transport verwendet wird. Dies ist derselbe Wert wie das lokale
RTCIceCandidate.usernameFragment
und ändert sich, wenn die Verbindung neu ausgehandelt wird. iceRole
Optional Experimentell-
Ein String, der die ICE
role
des zugrunde liegendenRTCDtlsTransport.iceTransport
angibt. Dies ist einer der folgenden: iceState
Optional Experimentell-
Ein String, der den aktuellen
state
des zugrunde liegendenRTCIceTransport
angibt. Dies ist einer der folgenden: selectedCandidatePairId
Optional-
Ein String, der die eindeutige Kennung für das Objekt enthält, das zur Erstellung der
RTCIceCandidatePairStats
verwendet wurde, die mit diesem Transport verbunden sind. localCertificateId
Optional-
Ein String, der die ID des lokalen Zertifikats enthält, das von diesem Transport verwendet wird. Nur für DTLS-Transporte vorhanden und nachdem DTLS ausgehandelt wurde.
packetsSent
Optional Experimentell-
Die Gesamtanzahl der über diesen Transport gesendeten Pakete.
packetsReceived
Optional Experimentell-
Die Gesamtanzahl der über diesen Transport empfangenen Pakete.
remoteCertificateId
Optional-
Ein String, der die ID oder das entfernte Zertifikat enthält, das von diesem Transport verwendet wird. Nur für DTLS-Transporte vorhanden und nachdem DTLS ausgehandelt wurde.
selectedCandidatePairChanges
Optional-
Die Anzahl der Male, die das ausgewählte Kandidatenpaar dieses Transports geändert wurde. Der Wert ist zunächst null und erhöht sich, wenn ein Kandidatenpaar ausgewählt oder verloren wird.
srtpCipher
Optional-
Ein String, der den beschreibenden Namen des Schutzprofils angibt, das für den Secure Real-time Transport Protocol (SRTP)-Transport verwendet wird, wie in der Spalte "Profile" des IANA DTLS-SRTP Schutzprofilregisters und RFC5764 definiert.
Zum Beispiel spezifiziert
"AES_CM_128_HMAC_SHA1_80"
das folgende Profil, wobeimaximum_lifetime
die maximale Anzahl von Paketen ist, die durch einen einzigen Satz von Schlüsseln geschützt werden können.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
Optional-
Ein String, der die ausgehandelte TLS-Version enthält. Diese ist für DTLS-Transporte vorhanden und existiert nur, nachdem DTLS ausgehandelt wurde.
Der Wert stammt vom DTLS-Handshake
ServerHello.version
und wird als vier großbuchstabige hexadezimale Ziffern dargestellt, wobei die Ziffern die zwei Bytes der Version darstellen. Beachten Sie jedoch, dass die Bytes möglicherweise nicht direkt mit den Versionsnummern übereinstimmen. Zum Beispiel stellt DTLS Version 1.2 als'FEFD'
dar, was numerisch{254, 253}
ist.
Gemeinsame Instanz-Eigenschaften
Die folgenden Eigenschaften sind allen WebRTC-Statistikobjekten gemeinsam.
id
-
Ein String, der das Objekt eindeutig identifiziert, das überwacht wird, um diesen Satz von Statistiken zu erstellen.
timestamp
-
Ein
DOMHighResTimeStamp
-Objekt, das den Zeitpunkt angibt, zu dem die Stichprobe für dieses Statistikobjekt genommen wurde. type
-
Ein String mit dem Wert
"transport"
, der den Typ der Statistiken angibt, die das Objekt enthält.
Beispiele
Dieses Beispiel zeigt eine Funktion, um die Transportstatistiken zurückzugeben oder null
, wenn keine Statistiken bereitgestellt werden.
Die Funktion wartet auf das Ergebnis eines Aufrufs von RTCPeerConnection.getStats()
und durchläuft dann den zurückgegebenen RTCStatsReport
, um nur die Statistiken des Typs "transport"
zu erhalten. Sie gibt dann die Statistiken oder null
unter Verwendung der Daten im Bericht zurück.
async function numberOpenConnections (peerConnection) {
const stats = await peerConnection.getStats();
let transportStats = null;
stats.forEach((report) => {
if (report.type === "transport") {
transportStats = report;
break;
}
});
return transportStats
}
Spezifikationen
Specification |
---|
Identifiers for WebRTC's Statistics API # dom-rtcstatstype-transport |