RTCTransportStats
RTCTransportStats
字典是 WebRTC API 的一部分,它提供了关于特定候选对使用的传输(RTCDtlsTransport
及其底层的 RTCIceTransport
)的信息。
BUNDLE 功能是一个 SDP 扩展,它允许协商使用单个传输来发送和接收由多个 SDP 媒体描述描述的媒体。如果远程端点知道此功能,则在协商完成后,所有 MediaStreamTrack
和数据通道都将捆绑到单个传输上。这对于当前的浏览器来说是正确的,但是如果连接到一个旧的、不支持 BUNDLE 的端点,则可能会为不同的媒体使用单独的传输。协商中使用的策略在 RTCPeerConnection
构造函数 中配置。
可以通过迭代 RTCStatsReport
(由 RTCPeerConnection.getStats()
返回)来获取这些统计信息,直到找到一个 type
为 transport
的报告。
实例属性
bytesReceived
可选-
在此传输上接收到的有效负载字节总数(接收到的字节,不包括报头、填充或 ICE 连接检查)。
bytesSent
可选-
在此传输上发送的有效负载字节总数(发送的字节,不包括报头、填充或 ICE 连接检查)。
dtlsCipher
可选-
一个字符串,指示用于 DTLS 传输的密码套件的名称,如 IANA 密码套件注册表 中“TLS 密码套件”部分的“描述”列中所定义。例如
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"
。 dtlsRole
可选 实验性-
关联的
RTCPeerConnection
的 DTLS 角色。这其中之一是客户端
服务器
unknown
(在 DTLS 协商开始之前)。
dtlsState
-
一个字符串,指示底层
RTCDtlsTransport
的当前state
。这其中之一是 iceLocalUsernameFragment
可选 实验性-
一个字符串,指示在此传输的消息验证过程中使用的本地用户名片段。此值与本地
RTCIceCandidate.usernameFragment
相同,如果连接重新协商,则会更改。 iceRole
可选 实验性-
一个字符串,指示底层
RTCDtlsTransport.iceTransport
的 ICErole
。这其中之一是 iceState
可选 实验性-
一个字符串,指示底层
RTCIceTransport
的当前state
。这其中之一是 selectedCandidatePairId
可选-
一个字符串,包含用于生成与此传输关联的
RTCIceCandidatePairStats
的对象的唯一标识符。 localCertificateId
可选-
一个字符串,包含此传输使用的本地证书的 ID。仅在 DTLS 传输中且 DTLS 已协商后存在。
packetsSent
可选 实验性-
通过此传输发送的数据包总数。
packetsReceived
可选 实验性-
在此传输上接收到的数据包总数。
remoteCertificateId
可选-
一个字符串,包含此传输使用的远程证书的 ID。仅在 DTLS 传输中且 DTLS 已协商后存在。
selectedCandidatePairChanges
可选-
此传输的选定候选对更改的次数。该值最初为零,并且每当选定或丢失候选对时都会增加。
srtpCipher
可选-
一个字符串,指示用于 安全实时传输协议 (SRTP) 传输的保护配置文件的描述性名称,如 IANA DTLS-SRTP 保护配置文件注册表 和 RFC5764 中“配置文件”列中所定义。
例如
"AES_CM_128_HMAC_SHA1_80"
指定以下配置文件,其中maximum_lifetime
是单个密钥集可以保护的最大数据包数。SRTP_AES128_CM_HMAC_SHA1_80 cipher: AES_128_CM cipher_key_length: 128 cipher_salt_length: 112 maximum_lifetime: 2^31 auth_function: HMAC-SHA1 auth_key_length: 160 auth_tag_length: 80
tlsVersion
可选-
一个字符串,包含协商的 TLS 版本。这对于 DTLS 传输存在,并且仅在 DTLS 已协商后存在。
该值来自 DTLS 握手
ServerHello.version
,并表示为四个大写十六进制数字,其中这些数字表示版本的两个字节。但是请注意,这些字节可能不会直接映射到版本号。例如,DTLS 将版本 1.2 表示为'FEFD'
,在数值上为{254, 253}
。
通用实例属性
以下属性对所有 WebRTC 统计信息对象都是通用的。
id
-
一个字符串,唯一标识正在监视以生成此统计信息集的对象。
timestamp
-
一个
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 |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。