RTCPeerConnectionStats

Baseline 2023
新推出

自 ⁨2023 年 5 月⁩起,此功能可在最新的裝置和瀏覽器版本上使用。此功能可能無法在舊版裝置或瀏覽器上使用。

WebRTC API 中的 RTCPeerConnectionStats 字典提供了關於高階 RTCPeerConnection 的資訊。

具體來說,它提供了已開啟的唯一資料通道的數量,以及已關閉的通道數量。這使得可以計算出當前開啟的通道數量。

可以透過迭代 RTCPeerConnection.getStats() 返回的 RTCStatsReport 來獲取這些統計資訊,直到找到一個 typepeer-connection 的報告。

例項屬性

dataChannelsOpened

一個正整數值,表示在其生命週期中進入 open 狀態的唯一 RTCDataChannel 物件的數量。

dataChannelsClosed

一個正整數值,表示在其生命週期中離開 open 狀態的唯一 RTCDataChannel 物件的數量(未經 open 狀態就轉換到 closingclosed 狀態的通道不計入此數量)。如果連線的任一端或底層傳輸關閉,通道將離開 open 狀態。

常見例項屬性

以下屬性是所有 WebRTC 統計資訊物件共有的。

id

一個字串,唯一標識正在監控以生成這組統計資訊的物件。

時間戳

一個 DOMHighResTimeStamp 物件,表示此統計資訊物件樣本的採集時間。

type

一個值為 "peer-connection" 的字串,表示物件包含的統計資訊的型別。

示例

此示例展示了一個函式,用於返回開啟的連線總數,如果未提供統計資訊,則返回 null。此函式可能會在迴圈中呼叫,類似於 RTCPeerConnection.getStats() 示例 中的方法。

該函式等待對 RTCPeerConnection.getStats() 的呼叫結果,然後迭代返回的 RTCStatsReport 以僅獲取型別為 "peer-connection" 的統計資訊。然後,它使用報告中的資料返回開啟的通道總數,或者返回 null

js
async function numberOpenConnections (peerConnection) {
  const stats = await peerConnection.getStats();
  let peerConnectionStats = null;

  stats.forEach((report) => {
    if (report.type === "peer-connection") {
      peerConnectionStats = report;
      break;
    }
  });

result = (typeof peerConnectionStats.dataChannelsOpened === 'undefined' || typeof peerConnectionStats.dataChannelsClosed=== 'undefined') ? null : peerConnectionStats.dataChannelsOpened - peerConnectionStats.dataChannelsClosed;
return result
}

規範

規範
WebRTC 統計 API 的識別符號
# dom-rtcstatstype-peer-connection

瀏覽器相容性