Skip to content

监控诊断

WetRTC 内置 StatsMonitor,自动采集 WebRTC 连接的实时统计数据,支持健康诊断。通过 rtc.stats 访问。

开启统计

ts
const rtc = new WetRTC({
  signal,
  statsInterval: 2000, // 采集间隔 2s,设为 0 关闭
})

获取实时快照

ts
rtc.on('stats', (snapshot) => {
  console.log('RTT:', snapshot.roundTripTime, 'ms')
  console.log('丢包率:', snapshot.packetsLostPercent, '%')
  console.log('分辨率:', snapshot.resolution)
  console.log('编码:', snapshot.codec)
  console.log('帧率:', snapshot.frameRate, 'fps')
})

StatsSnapshot 结构

字段类型说明
timestampnumber采样时间戳
bytesSentnumber已发送字节数
bytesReceivednumber已接收字节数
packetsLostnumber丢失包数
packetsLostPercentnumber丢包率
roundTripTimenumber往返延迟 (ms)
jitternumber抖动 (ms)
frameRatenumber发送帧率
resolutionstring发送分辨率 "1920x1080"
codecstring视频编码 "VP8" / "H264"
iceStateRTCIceConnectionStateICE 状态
connectionStateRTCPeerConnectionState连接状态

诊断报告

ts
const report = rtc.stats.getDiagnostics()
// {
//   healthy: false,
//   issues: [
//     { severity: 'warning', metric: 'rtt', value: 450, threshold: 300, suggestion: '...' }
//   ],
//   summary: '检测到 1 个问题'
// }

诊断规则

指标阈值级别
RTT> 300mswarning
RTT> 800mserror
丢包率> 5%warning
丢包率> 15%error
帧率< 10 fpswarning
帧率< 5 fpserror
ICE 状态failederror

手动控制

ts
rtc.stats.start()   // 开始采集
rtc.stats.stop()    // 停止采集

// 修改采集间隔
rtc.stats.updateOptions({ interval: 5000 })

Released under the MIT License.