跳到主要内容

网络探测

SDK 从 5.2.5 版本开始支持该功能。

startNetworkProbe 方法支持用户在加入房间前进行网络质量探测,通过相应的回调将当前网络往返时延、上下行丢包率、网络质量数据返回给上层应用。

提示

请在加入房间前完成网络质量探测。SDK 不支持在音视频通话过程中进行网络质量探测。

开启 RTC 网络探测

通过调用 RCRTCEngine 对象的 startNetworkProbe 方法开启 RTC 网络质量探测,stopNetworkProbe 方法结束 RTC 网络质量探测,实现 setOnNetworkProbeUpLinkStatsListenersetOnNetworkProbeDownLinkStatsListenersetOnNetworkProbeFinishedListener 方法接收相关的事件。

方法

JavaScript
rtcEngine.startNetworkProbe();

示例代码

JavaScript
// 设置网络探测开始监听
rtcEngine.setOnNetworkProbeStartedListener((code, errMsg) => {
if (code == 0) {
// 开启网络探测成功
console.log('网络探测开启成功');
} else {
// 开启网络探测失败
console.log('网络探测开启失败:', errMsg);
}
});

// 开启网络探测
rtcEngine.startNetworkProbe();
console.log('请求开启网络探测');

// 设置上行网络统计监听
rtcEngine.setOnNetworkProbeUpLinkStatsListener((stats) => {
// 汇报网络探测上行数据
console.log('上行网络统计:', stats);
});

// 设置下行网络统计监听
rtcEngine.setOnNetworkProbeDownLinkStatsListener((stats) => {
// 汇报网络探测下行数据
console.log('下行网络统计:', stats);
});

// 设置网络探测完成监听
rtcEngine.setOnNetworkProbeFinishedListener((code, errMsg) => {
// 网络探测完成 code 为 0 时是正常结束,非 0 为探测中断
if (code == 0) {
console.log('网络探测正常完成');
} else {
console.log('网络探测中断:', errMsg);
}
});

网络探测详情

加入房间前,调用 startNetworkProbe 开启网络质量探测。开启探测成功后,会回调注册的回调来反馈探测结果。每隔约 2 秒回调一次上下行网络的带宽、丢包、网络抖动和往返时延等数据。

探测总时长约为 30 秒,30 秒后会自动停止探测并触发 setOnNetworkProbeFinishedListener 回调方法通知上层应用探测结束,此时回调中的 code 值为 0。

提示

在探测自动结束(setOnNetworkProbeFinishedListener code == 0)前,如调用 joinRoom 或 unInit 等 API 方法会打断当前正在进行的 RTC 网络探测,此时回调中的 code 值不为 0。

网络统计数据结构

RCRTCIWNetworkProbeStats

参数类型说明
bandwidthNumber带宽,单位 kbps
lossNumber丢包率,单位 %
rttNumber往返时延,单位 ms
jitterNumber网络抖动,单位 ms

停止 RTC 网络探测

开启探测成功约 30 秒后,会自动停止探测,如果不想等待自动结束,可调用 stopNetworkProbe 方法强制停止探测。

方法

JavaScript
rtcEngine.stopNetworkProbe();

回调参数

参数类型说明
codeNumber错误码,0 表示成功
errMsgString错误信息

示例代码

JavaScript
// 停止网络探测的回调
rtcEngine.setOnNetworkProbeStoppedListener((code, errMsg) => {
if (code == 0) {
// 停止网络探测成功
console.log('网络探测停止成功');
} else {
// 停止网络探测失败
console.log('网络探测停止失败:', errMsg);
}
});

// 停止网络探测
rtcEngine.stopNetworkProbe();
console.log('请求停止网络探测');