RTCPeerConnection: getStats()-Methode
Die getStats()
-Methode der RTCPeerConnection
-Schnittstelle gibt ein Promise zurück, das mit Daten aufgelöst wird, die Statistiken über entweder die Gesamtverbindung oder über den angegebenen MediaStreamTrack
bieten.
Syntax
getStats()
getStats(selector)
getStats(selector, successCallback, failureCallback) // deprecated
Parameter
selector
Optional-
Ein
MediaStreamTrack
, für den Statistiken gesammelt werden sollen. Wenn diesnull
(der Standardwert) ist, werden Statistiken für die gesamteRTCPeerConnection
gesammelt.
Veraltete Parameter
In älterem Code und Dokumentationen könnte eine rückrufbasierte Version dieser Funktion zu sehen sein.
Diese ist veraltet und ihre Verwendung wird dringend abgeraten.
Sie sollten bestehenden Code aktualisieren, um die auf Promise
basierende Version von getStats()
zu verwenden.
Die Parameter der älteren Form von getStats()
sind unten beschrieben, um bei der Aktualisierung vorhandenen Codes zu helfen.
successCallback
Veraltet-
Eine Callback-Funktion, die aufgerufen wird, sobald der Bericht erfolgreich erstellt wurde.
failureCallback
Veraltet-
Eine Callback-Funktion, die aufgerufen wird, wenn die Erstellung des Berichts fehlgeschlagen ist.
Rückgabewert
Ein Promise
, das mit einem RTCStatsReport
-Objekt aufgelöst wird, das Verbindungsstatistiken bereitstellt.
Der Inhalt des Berichts hängt vom selector
und anderen Details der Verbindung ab.
Ausnahmen
Diese Methode wirft keine Ausnahmen; stattdessen lehnt sie das zurückgegebene Promise mit einem der folgenden Fehler ab:
InvalidAccessError
DOMException
-
Wird ausgelöst, wenn kein
RTCRtpSender
oderRTCRtpReceiver
vorhanden ist, dessentrack
dem angegebenenselector
entspricht, oderselector
mehr als einem Sender oder Empfänger entspricht.
Beispiele
Dieses Beispiel erstellt eine periodische Funktion unter Verwendung von
setInterval()
, die alle Sekunde
Statistiken für eine RTCPeerConnection
sammelt, einen HTML-formatierten Bericht erstellt und ihn in ein bestimmtes Element im DOM einfügt.
setInterval(() => {
myPeerConnection.getStats(null).then((stats) => {
let statsOutput = "";
stats.forEach((report) => {
statsOutput +=
`<h2>Report: ${report.type}</h2>\n<strong>ID:</strong> ${report.id}<br>\n` +
`<strong>Timestamp:</strong> ${report.timestamp}<br>\n`;
// Now the statistics for this report; we intentionally drop the ones we
// sorted to the top above
Object.keys(report).forEach((statName) => {
if (
statName !== "id" &&
statName !== "timestamp" &&
statName !== "type"
) {
statsOutput += `<strong>${statName}:</strong> ${report[statName]}<br>\n`;
}
});
});
document.querySelector(".stats-box").innerHTML = statsOutput;
});
}, 1000);
Dies funktioniert, indem getStats()
aufgerufen wird; wenn das Promise aufgelöst wird, iteriert es über die RTCStatsReport
-Objekte im zurückgegebenen RTCStatsReport
.
Ein Abschnitt wird für jeden Bericht mit einem Header und allen darunter liegenden Statistiken erstellt, wobei Typ, ID und Zeitstempel speziell behandelt werden, um sie am Anfang der Liste zu platzieren.
Sobald das HTML für den Bericht generiert ist, wird es in das Element mit der Klasse "stats-box"
eingefügt, indem seine innerHTML
-Eigenschaft gesetzt wird.
Spezifikationen
Specification |
---|
WebRTC: Real-Time Communication in Browsers # widl-RTCPeerConnection-getStats-Promise-RTCStatsReport--MediaStreamTrack-selector |
Browser-Kompatibilität
BCD tables only load in the browser