RTCTransportStats

RTCTransportStats 字典是 WebRTC API 的一部分,它提供了关于特定候选对使用的传输(RTCDtlsTransport 及其底层的 RTCIceTransport)的信息。

BUNDLE 功能是一个 SDP 扩展,它允许协商使用单个传输来发送和接收由多个 SDP 媒体描述描述的媒体。如果远程端点知道此功能,则在协商完成后,所有 MediaStreamTrack 和数据通道都将捆绑到单个传输上。这对于当前的浏览器来说是正确的,但是如果连接到一个旧的、不支持 BUNDLE 的端点,则可能会为不同的媒体使用单独的传输。协商中使用的策略在 RTCPeerConnection 构造函数 中配置。

可以通过迭代 RTCStatsReport(由 RTCPeerConnection.getStats() 返回)来获取这些统计信息,直到找到一个 typetransport 的报告。

实例属性

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.iceTransportICE role。这其中之一是

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

js
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 的浏览器中加载。