Signatur
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
"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);
}
});
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);
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);
});
// Wichtig · Fallstricke
typeist schreibgeschützt und immer"peer-connection". Ein anderer Wert bedeutet, dass es sich um eine andere Statistikart handelt.- Den
RTCStatsReportkannst du nicht über den Typ als Schlüssel abfragen. Die Schlüssel sind dieid-Werte, und die unterscheiden sich je nach Browser, zum Beispiel"PC0"oder eine zufällige ID. Filtere den Bericht deshalb immer übertype. getStats()gibt ein Promise zurück. Ohneawaitbzw..then()bekommst du keinen Bericht.- Die Browser unterstützen die einzelnen Felder unterschiedlich gut.
type,idundtimestampsind überall vorhanden, aberdataChannelsOpenedunddataChannelsClosedkö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.