Start · Sprachen · JavaScript · Referenz · RTCPeerConnectionStats.id

RTCPeerConnectionStats.id

Eigenschaft

Ein String, der das Statistikobjekt einer <code>RTCPeerConnection</code> innerhalb des <code>RTCStatsReport</code> eindeutig bezeichnet.

seit JavaScript Baseline: Chrome, Edge, Firefox, Safari (WebRTC-St Kategorie: webapi

Signatur

RTCPeerConnectionStats.id

Beschreibung

Die schreibgeschützte Eigenschaft id des Wörterbuchs RTCPeerConnectionStats enthält einen String, der das Objekt eindeutig bezeichnet, zu dem die Statistik gehört. Bei RTCPeerConnectionStats ist das die RTCPeerConnection selbst. Den Eintrag erkennt man an type === "peer-connection". Er enthält Kennzahlen wie dataChannelsOpened und dataChannelsClosed.

Die id ist zugleich der Schlüssel, unter dem der Eintrag in der Map-artigen Struktur RTCStatsReport gespeichert ist. Mit report.get(id) lässt sich der Eintrag also direkt abrufen. Die ID gilt für die gesamte Lebensdauer der Verbindung: Ruft man getStats() mehrmals auf, trägt dasselbe Objekt jedes Mal dieselbe id. So lassen sich Messwerte über die Zeit vergleichen, etwa um Differenzen oder Raten zu berechnen.

Der Inhalt des Strings ist nicht festgelegt und je nach Browser unterschiedlich, zum Beispiel "P" in Chromium oder eine UUID-artige Zeichenkette in Firefox. Behandeln Sie die ID deshalb als undurchsichtigen Bezeichner: Speichern und vergleichen Sie sie, aber lesen Sie keine Bedeutung aus ihrem Inhalt heraus.

Rückgabewert

Typ
string
Beschreibung
Eine eindeutige, über mehrere getStats()-Aufrufe hinweg gleichbleibende Kennung des Statistikobjekts, das die RTCPeerConnection beschreibt.

Beispiele

ID des peer-connection-Eintrags ermitteln

const pc = new RTCPeerConnection();
pc.createDataChannel('chat');

const report = await pc.getStats();
for (const stats of report.values()) {
  if (stats.type === 'peer-connection') {
    console.log('ID:', stats.id);
    console.log('Geöffnete Kanäle:', stats.dataChannelsOpened);
  }
}
ID: P Geöffnete Kanäle: 0

Eintrag über die ID direkt aus dem Bericht holen

const getPcStats = async (pc) => {
  const report = await pc.getStats();
  const entry = [...report.values()].find((s) => s.type === 'peer-connection');
  // Die id ist gleichzeitig der Map-Schlüssel
  return report.get(entry.id);
};

const pc = new RTCPeerConnection();
const stats = await getPcStats(pc);
console.log(stats.type, stats.timestamp > 0);
peer-connection true

Messwerte über die Zeit anhand der ID vergleichen

const pc = new RTCPeerConnection();
let previous = new Map();

const poll = async () => {
  const report = await pc.getStats();
  report.forEach((stats) => {
    if (stats.type !== 'peer-connection') return;
    const old = previous.get(stats.id);
    if (old) {
      const delta = stats.dataChannelsOpened - old.dataChannelsOpened;
      console.log(`[${stats.id}] neue Kanäle seit letzter Messung: ${delta}`);
    }
    previous.set(stats.id, stats);
  });
};

const timer = setInterval(poll, 2000);
// später: clearInterval(timer); pc.close();
[P] neue Kanäle seit letzter Messung: 0

// Wichtig · Fallstricke

  • Undurchsichtiger Wert: Aufbau und Länge der ID sind browserabhängig. Parsen Sie die ID nicht und erwarten Sie kein bestimmtes Format.
  • Nur innerhalb einer Verbindung eindeutig: Zwei verschiedene RTCPeerConnection-Instanzen können dieselbe ID liefern, etwa "P" in Chromium. Wer mehrere Verbindungen überwacht, sollte die Instanz zusätzlich als Schlüssel verwenden, zum Beispiel über eine WeakMap.
  • Nur lesbar: Statistikobjekte sind Momentaufnahmen. Änderungen an id haben keine Wirkung auf die Verbindung.
  • Kompatibilität: getStats() mit Promise-Rückgabe und RTCStatsReport wird von allen aktuellen Browsern unterstützt. Welche Felder ein peer-connection-Eintrag zusätzlich enthält, ist je nach Browser unterschiedlich. Ältere, Callback-basierte getStats()-Varianten sind veraltet.
  • Datenschutz: Statistiken können Rückschlüsse auf Netzwerk und Gerät zulassen. Übertragen Sie sie nur mit Bedacht an Telemetrie-Server.