检查WebRTC对等连接是否正在通过TURN服务器

检查WebRTC对等连接是否正在通过TURN服务器,webrtc,turn,Webrtc,Turn,我有一个视频会议应用程序,它使用HTML5+WebRTC运行良好。STUN/TURN服务器由非免费的第三方公司提供。您可能知道,WebRTC在浏览器之间进行了一些信息交换之后,会选择连接两个对等点的最佳方式,如果可能,它会使用不涉及TURN服务器的直接连接 问题是,是否可以检测何时使用直接连接或中间回合服务器建立RTPeerConnection?此代码段在chrome中工作 const stats = await pc.getStats() let selectedLocalCa

我有一个视频会议应用程序,它使用HTML5+WebRTC运行良好。STUN/TURN服务器由非免费的第三方公司提供。您可能知道,WebRTC在浏览器之间进行了一些信息交换之后,会选择连接两个对等点的最佳方式,如果可能,它会使用不涉及TURN服务器的直接连接


问题是,是否可以检测何时使用直接连接或中间回合服务器建立RTPeerConnection?

此代码段在chrome中工作

    const stats = await pc.getStats()
    let selectedLocalCandidate
    for (const {type, state, localCandidateId} of stats.values())
        if (type === 'candidate-pair' && state === 'succeeded' && localCandidateId) {
            selectedLocalCandidate = localCandidateId
            break
        }
    return !!selectedLocalCandidate && stats.get(selectedLocalCandidate)?.candidateType === 'relay')

其思想是迭代统计中的每个报告(通过pc.getStats()),查找选定的ICE候选项对,检查本地候选项的id,并通过查看候选项的类型确定连接是否使用TURN。

这可能会有所帮助,感谢您的提示,如果你能在谷歌chrome上查一查,至少能多了解一点情况,这会很有帮助chrome://webrtc-internals/ 在url中,它将列出活动连接,粗体的连接是您的活动连接,它将显示是本地连接、自反连接还是中继连接(使用TURN)。