使用AgoraRTCSDK 3.6.11在Chrome118中遇getStats报错求助
解决Agora RTC SDK 3.6.11在Chrome 118中
getStats报错问题 问题原因
Chrome 118版本彻底移除了RTCPeerConnection上基于回调的getStats() API,仅保留Promise版本,而Agora RTC SDK 3.6.11仍在使用旧的回调调用方式,导致触发报错:
Failed to execute 'getStats' on 'RTCPeerConnection': The callback-based getStats()
解决方案
方案1:升级Agora RTC SDK到兼容版本
Agora官方已针对浏览器API变更更新了SDK,直接升级到3.7.0及以上版本即可解决该问题。新版本已替换为Promise版getStats()调用,完全适配Chrome 118及后续版本。
方案2:临时polyfill适配(无法立即升级SDK时)
在加载Agora SDK之前,注入以下代码重写getStats方法,将回调调用适配为Promise版本:
// 适配回调版getStats到Promise版 if (RTCPeerConnection.prototype.getStats && RTCPeerConnection.prototype.getStats.length !== 0) { const originalGetStats = RTCPeerConnection.prototype.getStats; RTCPeerConnection.prototype.getStats = function(target, callback) { // 处理仅传回调的情况 if (typeof target === 'function') { callback = target; target = undefined; } // 调用原生Promise版,转成回调形式返回 return originalGetStats.call(this, target) .then(statsReport => callback(null, statsReport)) .catch(error => callback(error)); }; }
这段代码会拦截SDK对旧版getStats()的调用,转成浏览器支持的Promise方式执行,避免报错。
内容的提问来源于stack exchange,提问作者shoaib zahid
相关产品推荐
相关产品推荐

