Tutorial: 检测网络质量

检测网络质量

在通话过程中,检测用户的网络质量,可以判断用户当下的网络质量情况。若用户网络质量太差,应建议用户检查网络或尝试更换网络,以保证正常通话质量。

本文主要介绍如何基于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;
	        }
	   }
}

结果分析

经过上述步骤,可以拿到上下行丢包率来评估网络质量。