Estoy usando agora para videollamadas y servicios de transmisión. Necesito verificar la calidad de la red y notificar a los usuarios si la conexión es lenta. Para estos, escribí estas funciones para verificar la calidad de la red de enlace ascendente y descendente. Esta es la referencia
https://docs.agora.io/en/All/API%20Reference/web/v2.6/interfaces/agorartc.networkqualitystats.html
const rtcClient = this.client; const checkQualityDrop = ( quality: string, currentQuality: number, ): { newNetworkQuality: number; qualityDroppedNow: boolean } => { const newNetworkQuality = Number.parseInt(quality, 10); const qualityDroppedNow = currentQuality < 4 && newNetworkQuality >= 4; return { newNetworkQuality, qualityDroppedNow }; }; rtcClient.on('network-quality', (quality) => { if (quality.uplinkNetworkQuality) { const { newNetworkQuality, qualityDroppedNow, } = checkQualityDrop(quality.uplinkNetworkQuality, this.uplinkNetworkQuality); if (qualityDroppedNow) { this._log('network-drop', { type: 'uplink', newNetworkQuality }); } this.uplinkNetworkQuality = newNetworkQuality; } if (quality.downlinkNetworkQuality) { const { newNetworkQuality, qualityDroppedNow, } = checkQualityDrop(quality.downlinkNetworkQuality, this.downlinkNetworkQuality); if (qualityDroppedNow) { this._log('network-drop', { type: 'downlink', quality: newNetworkQuality }); } this.downlinkNetworkQuality = newNetworkQuality; } });Cualquier cosa superior a 4 en el enlace ascendente y descendente debería notificar a los usuarios sobre la red lenta. Pero aquí no funciona para la red lenta. De todos modos, ¿puedo reescribir o mejorar estas funciones?
No estoy seguro de que su condicional se evalúe como verdadero cuando baje la calidad:
const qualityDroppedNow = currentQuality < 4 && newNetworkQuality >= 4;Está comprobando si la calidad anterior era baja y se mejora/recupera la nueva calidad.