Numb Turn 服务器不工作还是我的配置有误?

问题描述

我正在使用 https://numb.viagenie.ca/ 提供的免费 TURN 服务器。 STUN 服务器也是公开的。

我正在使用以下配置:

const iceConfiguration = {
    iceServers: [
        {
            url: 'stun:stun.stunprotocol.org'
        },{
            url: 'stun:stun.sipgate.net:10000'
        },{
            url: 'turn:numb.viagenie.ca',credential: 'mypassword',username: 'myemail'
        }
    ]
}

我创建了一个提议,将其发送到另一个对等方(不同的 NAT),然后尝试使用答案设置远程描述。在调用 myConnection.setRemoteDescription(answer) 后,它会无限期地挂起并且没有得到解决。此外,远程对等方可以毫无问题地设置其远程描述。对于同一网络中的设备,这一切都很好。所以,我猜问题出在中继服务器上。

如果是这样,我应该放弃公共 Numb 服务器并选择将 Coturn 与 DigitalOcean 托管一起使用,还是我在这里做错了什么?

解决方法

在设置全新的 TURN 服务器之前,您可以尝试了解实际发生的情况:如果您使用 Wireshark 等应用程序在计算机上进行跟踪,并过滤 stun 消息,您应该能够看到浏览器向 TURN 服务器发送绑定请求和分配请求方法。

服务器缺少响应可能意味着服务器不可用、端口错误或防火墙阻止浏览器访问 TURN 服务器。

如果凭据是错误的,浏览器将收到一个 401 错误给具有消息完整性属性的分配请求。

您还可以通过运行 WebRTC 示例应用程序来验证 TURN URL 和凭据,该应用程序处理 https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ 处的 ICE 候选人收集。

,

似乎 Numb TURN 服务器实际上不起作用。不知道为什么。但它们确实出现在 WebRTC 涓流 ICE 示例应用程序中。