RTCTransportStats
WebRTC API 中的 RTCTransportStats 字典提供了有关特定候选对使用的传输 (RTCDtlsTransport 及其底层 RTCIceTransport) 的信息。
BUNDLE 功能是 SDP 的一个扩展,它允许协商使用单个传输来发送和接收由多个 SDP 媒体描述所定义的媒体。如果远程端点已知此功能,则在协商完成后,所有 MediaStreamTrack 和数据通道都会被捆绑到单个传输上。这对于当前浏览器是成立的,但如果连接到不支持 BUNDLE 的旧端点,则可能为不同媒体使用单独的传输。协商中使用的策略是在 RTCPeerConnection 构造函数 中配置的。
可以通过迭代 RTCPeerConnection.getStats() 返回的 RTCStatsReport 来获取这些统计信息,直到找到一个 type 为 transport 的报告。
实例属性
bytesReceived可选-
此传输上接收到的总有效载荷字节数(接收的字节数,不包括标头、填充或 ICE 连接检查)。
bytesSent可选-
此传输上发送的总有效载荷字节数(发送的字节数,不包括标头、填充或 ICE 连接检查)。
dtlsCipher可选-
一个字符串,指示用于 DTLS 传输的密码套件的名称,例如
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256。 dtlsRole可选 实验性-
一个字符串,指示关联的
RTCPeerConnection的 DTLS 角色。其值可以是:client、server、unknown(在 DTLS 协商开始之前)。 dtlsState-
一个字符串,指示底层
state的RTCDtlsTransport的当前状态。其值可以是:new、connecting、connected、closed、failed。 iceLocalUsernameFragment可选 实验性-
一个字符串,指示此传输管理的 ICE 交互会话的本地用户名片段。该片段唯一地标识了该会话。
iceRole可选 实验性-
一个字符串,指示底层
RTCIceTransport的 ICErole。其值可以是:controlled、controlling或unknown。 iceState可选 实验性-
一个字符串,指示底层
RTCIceTransport的当前state。其值可以是:new、checking、connected、completed、disconnected、failed或closed。 localCertificateId可选-
一个字符串,包含此传输使用的本地证书的 ID。仅对 DTLS 传输有效,并且在 DTLS 协商完成后才存在。
packetsReceived可选 实验性-
此传输上接收到的总数据包数。
packetsSent可选 实验性-
此传输上发送的总数据包数。
remoteCertificateId可选-
一个字符串,包含此传输使用的远程证书的 ID。仅对 DTLS 传输有效,并且在 DTLS 协商完成后才存在。
selectedCandidatePairChanges可选-
此传输所选候选对更改的次数。该值初始为零,每当选定或丢失候选对时增加。
selectedCandidatePairId可选-
一个字符串,包含用于生成与此传输关联的
RTCIceCandidatePairStats的对象的唯一标识符。 srtpCipher可选-
一个字符串,指示用于 安全实时传输协议 (SRTP) 传输的保护配置文件的描述性名称。
tlsVersion可选-
一个字符串,包含协商的 TLS 版本。这对于 DTLS 传输有效,并且仅在 DTLS 协商完成后存在。
常见实例属性
以下属性是所有 WebRTC 统计信息对象共有的。
id-
一个字符串,唯一标识正在监控以生成这组统计信息的对象。
时间戳-
一个
DOMHighResTimeStamp对象,表示此统计信息对象样本的采集时间。 type-
一个字符串,其值为
"transport",表示该对象包含的统计信息类型。
示例
此示例显示了一个函数,用于返回传输统计信息,如果未提供统计信息,则返回 null。
该函数会等待 RTCPeerConnection.getStats() 调用返回结果,然后遍历返回的 RTCStatsReport 以仅获取类型为 "transport" 的统计信息。然后,它使用报告中的数据返回统计信息,或者返回 null。
async function numberOpenConnections (peerConnection) {
const stats = await peerConnection.getStats();
let transportStats = null;
stats.forEach((report) => {
if (report.type === "transport") {
transportStats = report;
break;
}
});
return transportStats
}
规范
| 规范 |
|---|
| WebRTC 统计 API 的标识符 # dom-rtcstatstype-transport |
浏览器兼容性
加载中…