Start · Sprachen · JavaScript · Referenz · RTCTransportStats

RTCTransportStats

Schnittstelle

Statistik-Wörterbuch mit <code>type: "transport"</code> für den DTLS- und ICE-Transport einer <code>RTCPeerConnection</code>. Es enthält Bytes, Pakete, Zustände, Chiffren und das gewählte Kandidatenpaar.

seit JavaScript Chromium, Safari; Firefox nur teilweise. Teil der Kategorie: webapi

Signatur

dictionary RTCTransportStats : RTCStats

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 selectedCandidatePairId holt man das passende RTCIceCandidatePairStats und dann die lokalen und entfernten RTCIceCandidateStats. Hat ein Kandidat candidateType === "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

Typ
RTCTransportStats
Beschreibung
Ein reines Datenobjekt ohne Methoden. Es steht als Wert im RTCStatsReport (einer Map-ähnlichen Struktur), den RTCPeerConnection.getStats() liefert.