RTCIceCandidatePairStats

Baseline 廣泛可用 *

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流瀏覽器均已支援。

* 此特性的某些部分可能存在不同級別的支援。

WebRTC API 的 RTCIceCandidatePairStats 字典用於報告統計資訊,這些資訊可以深入瞭解 RTCPeerConnection 在連線時,以及在由指定的 ICE 候選對描述的方式配置時的質量和效能。

可以透過迭代 RTCPeerConnection.getStats() 返回的 RTCStatsReport,直到找到 type"candidate-pair" 的條目來獲取統計資訊。

例項屬性

availableIncomingBitrate 可選

表示網路可用入站容量的數字。這報告了所有候選對的傳入 RTP 流每秒可用的總位元數。它不考慮 Internet Protocol (IP) 開銷的大小,也不考慮任何其他傳輸層(例如 TCPUDP)。

availableOutgoingBitrate 可選

表示網路近似可用出站容量的數字。這報告了所有候選對的傳出 RTP 流每秒可用的總位元數。它不考慮 IP 開銷的大小,也不考慮任何其他傳輸層(例如 TCPUDP)。

bytesDiscardedOnSend 可選 實驗性

一個整數,表示由於此候選對上的套接字錯誤而丟棄的總位元組數。

bytesReceived 可選

一個整數,表示在此候選對上接收到的有效載荷位元組總數。

bytesSent 可選

一個整數,表示在此候選對上傳送的有效載荷位元組總數(不包括任何標頭、填充或其他協議開銷的傳送位元組總數)。

consentRequestsSent 可選 實驗性

一個整數,表示在此候選對上傳送的 STUN 同意請求總數。

currentRoundTripTime 可選

一個數字,表示最近傳送的 STUN 請求與收到響應之間經過的總時間(以秒為單位)。這可能基於涉及確認開啟連線許可權的請求。

lastPacketReceivedTimestamp 可選

一個 DOMHighResTimeStamp 值,表示本地對等方從此候選對的遠端對等方接收到最後一個數據包的時間。STUN 資料包不記錄時間戳。

lastPacketSentTimestamp 可選

一個 DOMHighResTimeStamp 值,表示本地對等方將最後一個數據包傳送到此候選對的遠端對等方的時間。STUN 資料包不記錄時間戳。

localCandidateId 可選

一個字串,表示與 RTCIceCandidate 對應的唯一 ID,該資料包含在 RTCIceCandidateStats 物件中,該物件提供了候選對本地候選的統計資訊。

nominated 可選

一個布林值,如果為 true,則表示此物件描述的候選對已提議使用,如果其優先順序在被提名的候選對中最高,則將(或已)使用。有關詳細資訊,請參見 RFC 5245,第 7.1.3.2.4 節

packetsDiscardedOnSend 可選 實驗性

一個整數,表示由於此候選對上的套接字錯誤而丟棄的資料包總數。

packetsReceived 可選 實驗性

一個整數,表示在此候選對上接收到的資料包總數。

packetsSent 可選 實驗性

一個整數,表示在此候選對上傳送的資料包總數。

remoteCandidateId 可選

一個字串,包含一個唯一 ID,對應於用於構造描述連線遠端端的 RTCIceCandidateStats 物件的遠端候選資料。

requestsReceived 可選

一個整數,表示已收到的連線性檢查請求總數,包括重傳。此值包括連線性檢查和 STUN 同意檢查。

requestsSent 可選

一個整數,表示已傳送的連線性檢查請求總數,包括重傳。

responsesReceived 可選

一個整數,表示已收到的連線性檢查響應總數。

responsesSent 可選

一個整數,表示已傳送的連線性檢查響應總數。這包括連線性檢查請求和 STUN 同意請求。

state 可選

一個字串,表示兩個候選之間連線的狀態。

totalRoundTripTime 可選

一個數字,表示從在此候選對上迄今為止發出的所有 STUN 請求傳送到接收響應之間經過的總時間(以秒為單位)。這包括連線性檢查和同意檢查請求。可以透過將此值除以 responsesReceived 來計算平均往返時間 (RTT)。

transportId 可選

一個字串,唯一標識被檢查以獲取用於生成此物件的傳輸相關統計資訊(如 RTCTransportStats 中所發現)的 RTCIceTransport

常見例項屬性

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

id

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

時間戳

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

type

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

已廢棄的屬性

以下屬性已從規範中刪除,不應再使用。您應儘快更新任何現有程式碼以避免使用它們。檢視相容性表以瞭解哪些瀏覽器支援它們以及在哪個版本中。

priority 已廢棄 可選 非標準

一個整數值,表示候選對的優先順序。

readable 已廢棄 可選 非標準

一個布林值,表示是否可以透過候選對描述的連線傳送資料。

writable 已廢棄 可選 非標準

一個布林值,表示是否可以透過候選對描述的連線接收資料。

非標準屬性

selected 非標準 可選

一個 Firefox 特有的布林值,如果此物件描述的候選對是當前正在使用的對,則為 true。確定選定候選對的符合規範的方法是查詢型別為 transport 的統計資訊物件,它是一個 RTCTransportStats 物件。該物件的 selectedCandidatePairId 屬性表示指定的傳輸是否正在使用。

用法說明

當前活動的 ICE 候選對(如果有)可以透過呼叫 RTCIceTransport 方法 getSelectedCandidatePair() 來獲取,該方法返回一個 RTCIceCandidatePair 物件,如果沒有選擇的對,則返回 null。活動候選對描述了 RTCPeerConnection 兩端的當前配置。

如果 RTCIceTransport 執行 ICE 重啟,則任何非活動候選對的候選對都會被刪除,此時 ICE 傳輸的 state 返回 new 並且協商再次開始。有關更多資訊,請參見 ICE 重啟

示例

此示例計算連線性檢查之間經過的平均時間。

js
if (rtcStats && rtcStats.type === "candidate-pair") {
  let elapsed =
    (rtcStats.lastRequestTimestamp - rtcStats.firstRequestTimestamp) /
    rtcStats.requestsSent;

  console.log(`Average time between ICE connectivity checks: ${elapsed} ms.`);
}

程式碼首先檢視 rtcStats,以檢視其 type 是否為 candidate-pair。如果是,則我們知道 rtcStats 實際上是一個 RTCIceCandidatePairStats 物件。然後,我們可以計算 STUN 連線性檢查之間經過的平均時間並記錄該資訊。

規範

規範
WebRTC 統計 API 的識別符號
# dom-rtcstatstype-candidate-pair

瀏覽器相容性