RTCPeerConnection: getStats() 方法

Baseline 已廣泛支援

此功能已成熟,可跨多種裝置和瀏覽器版本使用。自 2017 年 9 月以來,它已在瀏覽器中提供。

RTCPeerConnection 介面的 getStats() 方法返回一個 Promise,該 Promise 將解析為提供有關整體連線或指定 MediaStreamTrack 統計資訊的資料。

語法

js
getStats()
getStats(selector)

getStats(selector, successCallback, failureCallback) // deprecated

引數

selector 可選

用於收集統計資訊的 MediaStreamTrack。如果此值為 null(預設值),則將為整個 RTCPeerConnection 收集統計資訊。

已棄用的引數

在舊的程式碼和文件中,您可能會看到此函式的回撥版本。此版本已棄用,強烈不推薦使用。您應該將任何現有程式碼更新為使用基於 PromisegetStats() 版本。下面介紹了舊版 getStats() 的引數,以幫助更新現有程式碼。

successCallback 已棄用

在成功生成報告後呼叫的一次 回撥函式

failureCallback 已棄用

在生成報告失敗後呼叫的一次 回撥函式

返回值

一個 Promise,它將解析為一個 RTCStatsReport 物件,提供連線統計資訊。報告的內容取決於 selector 和連線的其他詳細資訊。

異常

此方法不丟擲異常;相反,它會使用以下錯誤之一拒絕返回的 Promise

InvalidAccessError DOMException

當沒有 RTCRtpSenderRTCRtpReceivertrack 與指定的 selector 匹配,或者 selector 匹配多個傳送方或接收方時丟擲。

示例

此示例使用 setInterval() 建立一個定期執行的函式,該函式每秒為 RTCPeerConnection 收集一次統計資訊,生成一個 HTML 格式的報告,並將其插入到 DOM 中的特定元素中。

js
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);

這是透過呼叫 getStats() 來實現的,然後,當 Promise 解析時,會遍歷返回的 RTCStatsReport 上的 RTCStatsReport 物件。為每個報告建立一個部分,其中包含一個標題和下面的所有統計資訊,型別、ID 和時間戳被特殊處理以將它們放在列表頂部。

一旦為報告生成了 HTML,它就會透過設定其 innerHTML 屬性來注入到類名為 "stats-box" 的元素中。

規範

規範
WebRTC:瀏覽器中的即時通訊
# widl-RTCPeerConnection-getStats-Promise-RTCStatsReport--MediaStreamTrack-selector

瀏覽器相容性