RTCTransportStats

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

WebRTC API 中的 RTCTransportStats 字典提供了有关特定候选对使用的传输 (RTCDtlsTransport 及其底层 RTCIceTransport) 的信息。

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

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

实例属性

bytesReceived 可选

此传输上接收到的总有效载荷字节数(接收的字节数,不包括标头、填充或 ICE 连接检查)。

bytesSent 可选

此传输上发送的总有效载荷字节数(发送的字节数,不包括标头、填充或 ICE 连接检查)。

dtlsCipher 可选

一个字符串,指示用于 DTLS 传输的密码套件的名称,例如 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

dtlsRole 可选 实验性

一个字符串,指示关联的 RTCPeerConnection 的 DTLS 角色。其值可以是:clientserverunknown(在 DTLS 协商开始之前)。

dtlsState

一个字符串,指示底层 stateRTCDtlsTransport 的当前状态。其值可以是:newconnectingconnectedclosedfailed

iceLocalUsernameFragment 可选 实验性

一个字符串,指示此传输管理的 ICE 交互会话的本地用户名片段。该片段唯一地标识了该会话。

iceRole 可选 实验性

一个字符串,指示底层 RTCIceTransport 的 ICE role。其值可以是:controlledcontrollingunknown

iceState 可选 实验性

一个字符串,指示底层 RTCIceTransport 的当前 state。其值可以是:newcheckingconnectedcompleteddisconnectedfailedclosed

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

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

浏览器兼容性