RTCTransportStats
Das RTCTransportStats
-Wörterbuch der WebRTC API liefert Informationen über den Transport (RTCDtlsTransport
und das zugrunde liegende RTCIceTransport
), der von einem bestimmten Kandidatenpaar verwendet wird.
Das BUNDLE-Feature ist eine SDP-Erweiterung, die es ermöglicht, einen einzigen Transport zur Übertragung und zum Empfang von Medien, die in mehreren SDP-Medienbeschreibungen beschrieben sind, zu verwenden.
Wenn der entfernte Endpunkt über dieses Feature Bescheid weiß, werden alle MediaStreamTrack
und Datenkanäle nach Abschluss der Verhandlung auf einen einzigen Transport gebündelt.
Dies gilt für aktuelle Browser, aber wenn eine Verbindung zu einem älteren Endpunkt hergestellt wird, der nicht BUNDLE-kompatibel ist, könnten unterschiedliche Transporte für verschiedene Medien verwendet werden.
Die Politik, die bei der Verhandlung verwendet werden soll, wird im RTCPeerConnection
-Konstruktor konfiguriert.
Diese Statistiken können erhalten werden, indem das RTCStatsReport
durchlaufen wird, das von RTCPeerConnection.getStats()
zurückgegeben wird, bis Sie einen Bericht mit dem type
von transport
finden.
Instanzeigenschaften
bytesReceived
Optional-
Die Gesamtanzahl der Nutzdaten-Bytes, die auf diesem Transport empfangen wurden (empfangene Bytes, ohne Header, Padding oder ICE-Konnektivitätsprüfungen).
bytesSent
Optional-
Die Gesamtanzahl der Nutzdaten-Bytes, die auf diesem Transport gesendet wurden (gesendete Bytes, ohne Header, Padding oder ICE-Konnektivitätsprüfungen).
dtlsCipher
Optional-
Ein String, der den Namen der Cipher-Suite angibt, die für den DTLS-Transport verwendet wird, wie in der "Description"-Spalte der TLS Cipher Suites im IANA Cipher Suite Registry definiert. Beispiel:
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"
. dtlsRole
Optional Experimentell-
Die DTLS-Rolle der zugehörigen
RTCPeerConnection
. Diese ist eine von:client
server
unknown
(bevor die DTLS-Verhandlung beginnt).
dtlsState
-
Ein String, der den aktuellen
state
des zugrunde liegendenRTCDtlsTransport
angibt. Diese ist eine von: iceLocalUsernameFragment
Optional Experimentell-
Ein String, der das lokale Benutzernamen-Fragment angibt, das bei der Nachrichtenvalidierung für diesen Transport verwendet wird. Dies ist derselbe Wert wie der lokale
RTCIceCandidate.usernameFragment
und ändert sich, wenn die Verbindung neu verhandelt wird. iceRole
Optional Experimentell-
Ein String, der die ICE
role
des zugrunde liegendenRTCDtlsTransport.iceTransport
angibt. Diese ist eine von: iceState
Optional Experimentell-
Ein String, der den aktuellen
state
des zugrunde liegendenRTCIceTransport
angibt. Diese ist eine von: selectedCandidatePairId
Optional-
Ein String, der die eindeutige Kennung des Objekts enthält, das zur Erstellung der
RTCIceCandidatePairStats
zugewiesen 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 vorhanden für DTLS-Transporte 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 vorhanden für DTLS-Transporte und nachdem DTLS ausgehandelt wurde.
selectedCandidatePairChanges
Optional-
Die Anzahl der Male, die sich das ausgewählte Kandidatenpaar dieses Transports geändert hat. Der Wert ist anfangs 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 das Secure Real-time Transport Protocol (SRTP) verwendet wird, wie in der "Profile"-Spalte des IANA DTLS-SRTP-Schutzprofil-Registers und RFC5764 definiert.
Zum Beispiel:
"AES_CM_128_HMAC_SHA1_80"
spezifiziert das folgende Profil, bei demmaximum_lifetime
die maximale Anzahl von Paketen ist, die durch einen einzigen Schlüsselsatz 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. Dieser ist vorhanden für DTLS-Transporte und existiert nur, nachdem DTLS verhandelt wurde.
Der Wert stammt vom DTLS-Handshake
ServerHello.version
und wird als vier Großbuchstaben-Hexadezimalstellen dargestellt, wobei die Stellen die beiden Bytes der Version darstellen. Es sei jedoch darauf hingewiesen, dass die Bytes möglicherweise nicht direkt den Versionsnummern entsprechen. Zum Beispiel stellt DTLS die Version 1.2 als'FEFD'
dar, was numerisch{254, 253}
ist.
Gemeinsame Instanzeigenschaften
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 die Zeit angibt, zu der die Probe für dieses Statistikobjekt aufgenommen 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, die die Transportstatistiken zurückgibt, 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.
Anschließend gibt sie 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 |
Browser-Kompatibilität
BCD tables only load in the browser