问题描述
我正在使用 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 示例应用程序中。