webrtc - 检查 WebRTC 对等连接是否通过 TURN 服务器

标签 webrtc turn

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

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

最佳答案

此代码段适用于 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。

关于webrtc - 检查 WebRTC 对等连接是否通过 TURN 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49027287/

相关文章:

c++ - 声明需要退出时析构函数 [-Werror,-Wexit-time-destructors]

javascript - WebSocket 连接失败:连接建立时出错:net::ERR_CONNECTION_REFUSED

webrtc - 为什么 WebRTC 使用候选对而不是 IP + 端口对进行双向通信

java - 用于 Java 的 STUN、TURN、ICE 库

javascript - WebRTC 如何决定使用哪些 TURN 服务器

ios - 在终端中找不到 Ninja 命令

javascript - webRTC-没有从其他同行获得流和冰候选人

webrtc - 单个 TURN 服务器是否足以支持受限 NAT 配置后面的两个设备?

webrtc - 如何检查WebRTC是否使用中继服务器?

webrtc - WebRTC 是如何工作的?