在通话过程中,检测用户的网络质量,可以判断用户当下的网络质量情况。若用户网络质量太差,应建议用户检查网络或尝试更换网络,以保证正常通话质量。
本文主要介绍如何基于RoomCallback.connection_indicator事件实现通话过程网络质量检测。
通话过程中的网络质量检测
room.addCallback(RoomCallback.mcu_peerconnection_completed, onMCUPeerConnectionCompleted);
room.addCallback(RoomCallback.connection_indicator, onConnectionIndicator);
function onMCUPeerConnectionCompleted() {
var connectionInfoInterval = 1000; //网络情况收集计算频率
room.connectionInfoCollector.start(connectionInfoInterval); //开始收集网络情况,不填写频率参数,默认1000毫秒
room.connectionInfoCollector.stop(); //停止收集网络情况
}
/**
* 网络状态回调
*/
function onConnectionIndicator(connectionIndicator) {
if(connectionIndicator) {
var roomConnection = connectionIndicator.getRoomConnection();
if(roomConnection) {
var localAddress = "本地地址: " + roomConnection.localAddress;
var localPort = "本地端口: " + roomConnection.localPort;
var localProtocol = "本地协议: " + roomConnection.localProtocol;
var remoteAddress = "远端地址: " + roomConnection.remoteAddress;
var remotePort = "远端端口: " + roomConnection.remotePort;
var remoteProtocol = "远端协议: " + roomConnection.remoteProtocol;
var bitrate = "流量: 下行/" + roomConnection.downloadBitrate + ", 上行/" + roomConnection.uploadBitrate;
var packet = "数据包:下行/" + roomConnection.downloadPacket + ", 上行/" + roomConnection.uploadPacket;
var packetLost = "数据包丢包数: 下行/" + roomConnection.downloadPacketLost + ", 上行/" + roomConnection.uploadPacketLost;
var packetLossRate = "丢包率: 下行/" + roomConnection.downloadPacketLossRate + ", 上行/" + roomConnection.uploadPacketLossRate;
var currentRoundTripTime = "当前的往返时间(RTT): " + roomConnection.currentRoundTripTime;
var totalRoundTripTime = "累计的往返时间(RTT): " + roomConnection.totalRoundTripTime;
}
}
}
结果分析
经过上述步骤,可以拿到上下行丢包率来评估网络质量。