Signatur
Beschreibung
RTCTransportStats ist ein Wörterbuch (Dictionary) der WebRTC-Statistik-API und erbt von RTCStats. Einen Konstruktor gibt es nicht. Die Objekte stecken im RTCStatsReport, den RTCPeerConnection.getStats() liefert, und sind an type === "transport" zu erkennen. Jeder Eintrag beschreibt einen RTCDtlsTransport samt dem RTCIceTransport darunter. Moderne Verbindungen bündeln Audio, Video und Datenkanäle per BUNDLE und rtcp-mux. Deshalb gibt es meist genau einen Transport-Eintrag pro Verbindung.
Der Eintrag zeigt den Zustand der Verbindung als Ganzes:
- Verkehr: gesendete und empfangene Bytes und Pakete (
bytesSent,bytesReceived,packetsSent,packetsReceived) - Zustände: Fortschritt des DTLS-Handshakes (
dtlsState) und ICE-Zustand (iceState) - Sicherheit: ausgehandelte Chiffren und Protokollversion (
dtlsCipher,srtpCipher,tlsVersion) - Verweise: das aktive Kandidatenpaar (
selectedCandidatePairId) und die Zertifikate (localCertificateId,remoteCertificateId)
Typische Einsatzfälle:
- Verbindungsdiagnose: Hängt die Verbindung beim ICE-Aufbau oder beim DTLS-Handshake?
- Bitraten-Monitoring: Man teilt die Differenz der Bytes zwischen zwei Messungen durch die Differenz der
timestamp-Werte. - Relay-Erkennung: Über
selectedCandidatePairIdholt man das passendeRTCIceCandidatePairStatsund dann die lokalen und entferntenRTCIceCandidateStats. Hat ein KandidatcandidateType === "relay", läuft die Verbindung über einen TURN-Server.
Die Werte sind Momentaufnahmen. Für Raten braucht man immer zwei Messungen. Alle …Id-Felder sind Schlüssel in demselben Report und lassen sich mit report.get(id) auflösen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $id Pflicht | string | Geerbt von RTCStats. Eindeutige ID des Eintrags im Bericht. |
|
| $timestamp Pflicht | DOMHighResTimeStamp | Geerbt. Zeitpunkt der Messung in Millisekunden. | |
| $type Pflicht | "transport" | Geerbt. Bei diesem Wörterbuch immer "transport". |
|
| $bytesSent | number | Gesendete Nutzdaten-Bytes ohne Header und Padding, gezählt über alle Pakete des Transports. | |
| $bytesReceived | number | Empfangene Nutzdaten-Bytes. | |
| $packetsSent | number | Anzahl der gesendeten Pakete. | |
| $packetsReceived | number | Anzahl der empfangenen Pakete. | |
| $dtlsState Pflicht | "new"|"connecting"|"connected"|"closed"|"failed" | Aktueller Zustand des DTLS-Transports. | |
| $iceState | "new"|"checking"|"connected"|"completed"|"disconnected"|"failed"|"closed" | Zustand des darunterliegenden RTCIceTransport. |
|
| $iceRole | "controlling"|"controlled"|"unknown" | ICE-Rolle dieses Endpunkts. | |
| $iceLocalUsernameFragment | string | Lokales ICE-Username-Fragment (ufrag). Ändert sich bei einem ICE-Restart. |
|
| $selectedCandidatePairId | string | ID des RTCIceCandidatePairStats-Eintrags, der gerade verwendet wird. |
|
| $selectedCandidatePairChanges | number | Wie oft das gewählte Kandidatenpaar gewechselt hat. Hohe Werte sprechen für eine instabile Verbindung. | |
| $localCertificateId | string | ID des RTCCertificateStats-Eintrags für das lokale Zertifikat. |
|
| $remoteCertificateId | string | ID des RTCCertificateStats-Eintrags für das Zertifikat der Gegenstelle. |
|
| $tlsVersion | string | Ausgehandelte DTLS-Version als Hex-String, z. B. "FEFD" für DTLS 1.2. |
|
| $dtlsCipher | string | IANA-Name der DTLS-Cipher-Suite, z. B. "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256". |
|
| $dtlsRole | "client"|"server"|"unknown" | DTLS-Rolle dieses Endpunkts im Handshake. | |
| $srtpCipher | string | Name des SRTP-Schutzprofils, z. B. "AES_CM_128_HMAC_SHA1_80" oder "AEAD_AES_128_GCM". |
Rückgabewert
RTCStatsReport (einer Map-ähnlichen Struktur), den RTCPeerConnection.getStats() liefert.