You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取RTCSctpTransportStats对象读取WebRTC SCTP往返时间

解决获取RTCSctpTransportStats无返回的方案

核心排查步骤

  • 调整统计拉取的触发时机
    你当前监听的iceConnectionState == "connected"仅代表ICE层连接完成,SCTP传输层握手会晚于ICE完成,需要等SCTP本身状态就绪后再拉取统计。你可以监听pc.sctp的onstatechange事件,等状态变为connected再执行统计查询。
  • 核对统计项的类型标识
    不同浏览器的早期WebRTC实现对SCTP统计项的type命名有差异,部分Chromium旧版本使用sctp作为类型值,而非规范定义的sctp-transport,遍历统计时可以先打印所有条目的type字段确认实际命名。
  • 确保DataChannel已完全建立
    可以追加监听DataChannel的open事件,至少有一个DataChannel成功连接后再拉取SCTP统计,避免SCTP层未完全初始化导致统计项未生成。

调整后的参考代码

// 监听SCTP状态就绪后再拉取统计
pc.sctp.onstatechange = () => {
  if (pc.sctp.state === 'connected') {
    pc.getStats().then(statsReport => {
      statsReport.forEach(item => {
        // 兼容两种type命名规则
        if (item.type === 'sctp-transport' || item.type === 'sctp') {
          console.log('SCTP往返时间:', item.smoothedRoundTripTime);
        }
      });
    });
  }
};

// 也可以在DataChannel open后额外触发一次统计拉取
pc.ondatachannel = (event) => {
  const channel = event.channel;
  channel.onopen = () => {
    // 这里可复用上面的getStats逻辑
  };
};

内容的提问来源于stack exchange,提问作者NO_GUI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 10:06:02