RTCPeerConnectionStats
RTCPeerConnectionStats
是 WebRTC API 中的一个字典,它提供了有关高级对等连接(RTCPeerConnection
)的信息。
特别是,它提供了已打开的唯一数据通道的数量以及已关闭的打开通道的数量。这允许计算当前打开的通道数量。
可以通过迭代 RTCStatsReport
(由 RTCPeerConnection.getStats()
返回)来获取这些统计信息,直到找到类型为 peer-connection
的报告。
实例属性
dataChannelsOpened
-
一个正整数,表示在其生命周期内进入
open
状态的唯一RTCDataChannel
对象的数量。 dataChannelsClosed
-
一个正整数,表示在其生命周期内离开
open
状态的唯一RTCDataChannel
对象的数量(从未处于open
状态而转换到closing
或closed
的通道不计入此数量)。如果连接的任一端或底层传输关闭,则通道将离开open
状态。
常用实例属性
以下属性对所有 WebRTC 统计信息对象都是通用的。
id
-
一个唯一标识正在监控以生成此统计信息集的对象的字符串。
timestamp
-
一个
DOMHighResTimeStamp
对象,指示为该统计信息对象获取样本的时间。 type
-
一个值为
"peer-connection"
的字符串,指示对象包含的统计信息类型。
示例
此示例显示了一个函数,用于返回打开的连接总数,或者如果未提供统计信息则返回 null
。这可能在循环中调用,类似于 RTCPeerConnection.getStats()
示例 中使用的方法。
该函数等待对 RTCPeerConnection.getStats()
的调用的结果,然后迭代返回的 RTCStatsReport
以仅获取类型为 "peer-connection"
的统计信息。然后,它使用报告中的数据返回打开的通道总数或 null
。
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 |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。