RTCPeerConnection: getStats()-Methode
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2017.
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
selectorOptional-
Ein
MediaStreamTrack, für den Statistiken gesammelt werden sollen. Wenn diesnull(der Standardwert) ist, werden Statistiken für die gesamteRTCPeerConnectiongesammelt.
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.
successCallbackVeraltet-
Eine Callback-Funktion, die aufgerufen wird, sobald der Bericht erfolgreich erstellt wurde.
failureCallbackVeraltet-
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:
InvalidAccessErrorDOMException-
Wird ausgelöst, wenn kein
RTCRtpSenderoderRTCRtpReceivervorhanden ist, dessentrackdem angegebenenselectorentspricht, oderselectormehr 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
Loading…