Start · Sprachen · JavaScript · Referenz · RTCPeerConnectionStats.type

RTCPeerConnectionStats.type

Eigenschaft

Schreibgeschützter String, der ein Statistikobjekt als <code>RTCPeerConnectionStats</code> kennzeichnet. Der Wert ist immer <code>"peer-connection"</code>.

seit JavaScript Baseline: alle modernen Browser (Chrome, Edge, Fir Kategorie: webapi

Signatur

RTCPeerConnectionStats.type

Beschreibung

Die Eigenschaft type ist im Wörterbuch RTCPeerConnectionStats enthalten und hat immer den festen Wert "peer-connection". Sie stammt aus dem Basis-Wörterbuch RTCStats. Dort legt sie fest, zu welcher Statistikart ein Eintrag im RTCStatsReport gehört.

Ein Aufruf von RTCPeerConnection.getStats() liefert einen RTCStatsReport. Das ist eine Map-ähnliche Sammlung mit vielen Statistikobjekten verschiedener Arten, zum Beispiel "inbound-rtp", "outbound-rtp", "candidate-pair" oder "transport". Mit type === "peer-connection" findest du den einen Eintrag, der die ganze Verbindung beschreibt. Er enthält unter anderem dataChannelsOpened und dataChannelsClosed.

Du brauchst die Eigenschaft vor allem, um den Bericht zu filtern, etwa in Monitoring-Dashboards, beim Debuggen von DataChannels oder beim Senden von Messdaten an einen Server. Pro RTCPeerConnection gibt es genau ein Objekt dieser Art im Bericht.

Rückgabewert

Typ
string
Beschreibung
Immer der String "peer-connection". Er gehört zur Aufzählung RTCStatsType.

Beispiele

Peer-Connection-Statistik aus dem Bericht herausfiltern

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

const report = await pc.getStats();
report.forEach((stats) => {
  if (stats.type === 'peer-connection') {
    console.log(stats.type, stats.id);
    console.log('Geöffnete DataChannels:', stats.dataChannelsOpened);
  }
});
peer-connection PC0 (Beispiel-ID, je nach Browser anders) Geöffnete DataChannels: 0

Hilfsfunktion: Statistik der Verbindung direkt holen

const getPeerConnectionStats = async (pc) => {
  const report = await pc.getStats();
  return [...report.values()].find((s) => s.type === 'peer-connection') ?? null;
};

const pc = new RTCPeerConnection();
const stats = await getPeerConnectionStats(pc);
console.log(stats?.type);
peer-connection

DataChannel-Nutzung regelmäßig protokollieren

const pc = new RTCPeerConnection();

const intervalId = setInterval(async () => {
  const report = await pc.getStats();
  for (const stats of report.values()) {
    if (stats.type !== 'peer-connection') continue;
    const open = stats.dataChannelsOpened - stats.dataChannelsClosed;
    console.log(`[${new Date(stats.timestamp).toLocaleTimeString()}] offene Kanäle: ${open}`);
  }
}, 5000);

// Aufräumen, wenn die Verbindung geschlossen wird
pc.addEventListener('connectionstatechange', () => {
  if (pc.connectionState === 'closed') clearInterval(intervalId);
});
[12:00:05] offene Kanäle: 0

// Wichtig · Fallstricke

  • type ist schreibgeschützt und immer "peer-connection". Ein anderer Wert bedeutet, dass es sich um eine andere Statistikart handelt.
  • Den RTCStatsReport kannst du nicht über den Typ als Schlüssel abfragen. Die Schlüssel sind die id-Werte, und die unterscheiden sich je nach Browser, zum Beispiel "PC0" oder eine zufällige ID. Filtere den Bericht deshalb immer über type.
  • getStats() gibt ein Promise zurück. Ohne await bzw. .then() bekommst du keinen Bericht.
  • Die Browser unterstützen die einzelnen Felder unterschiedlich gut. type, id und timestamp sind überall vorhanden, aber dataChannelsOpened und dataChannelsClosed können in älteren Versionen fehlen. Prüfe sie deshalb vor der Verwendung.
  • Ältere Chrome-Versionen hatten eine veraltete, callback-basierte getStats()-Variante mit anderen Typnamen. Verwende nur die Promise-Variante, die dem Standard entspricht.