监控诊断
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 结构
| 字段 | 类型 | 说明 |
|---|---|---|
timestamp | number | 采样时间戳 |
bytesSent | number | 已发送字节数 |
bytesReceived | number | 已接收字节数 |
packetsLost | number | 丢失包数 |
packetsLostPercent | number | 丢包率 |
roundTripTime | number | 往返延迟 (ms) |
jitter | number | 抖动 (ms) |
frameRate | number | 发送帧率 |
resolution | string | 发送分辨率 "1920x1080" |
codec | string | 视频编码 "VP8" / "H264" |
iceState | RTCIceConnectionState | ICE 状态 |
connectionState | RTCPeerConnectionState | 连接状态 |
诊断报告
ts
const report = rtc.stats.getDiagnostics()
// {
// healthy: false,
// issues: [
// { severity: 'warning', metric: 'rtt', value: 450, threshold: 300, suggestion: '...' }
// ],
// summary: '检测到 1 个问题'
// }诊断规则
| 指标 | 阈值 | 级别 |
|---|---|---|
| RTT | > 300ms | warning |
| RTT | > 800ms | error |
| 丢包率 | > 5% | warning |
| 丢包率 | > 15% | error |
| 帧率 | < 10 fps | warning |
| 帧率 | < 5 fps | error |
| ICE 状态 | failed | error |
手动控制
ts
rtc.stats.start() // 开始采集
rtc.stats.stop() // 停止采集
// 修改采集间隔
rtc.stats.updateOptions({ interval: 5000 })