我不知道是否有人发过这个,但我不想问。我的问题是这样的:
有人可以解释发生了什么吗?这是STUN / ICE的问题吗?还是JSEP?
答案 0 :(得分:5)
公共演示包括一个STUN服务器但不提供TURN服务器,因为运行免费TURN服务器的带宽很昂贵。 STUN得到了很多,但不是所有的NAT /防火墙,但没有像TURN那样多的地方。您可能处于TURN可以工作的情况(但您没有TURN服务器)但STUN没有。
答案 1 :(得分:3)
我已经能够在两个不同的NAT后面的http://apprtc.appspot.com/使用该演示了。所以它至少可以在理论上起作用;但是,众所周知,STUN,TURN和ICE并非绝对可靠。首先,如果某人阻止了对端口19302(apprtc演示使用的STUN服务器的端口)的访问,则防火墙遍历将永远无法启动。
基本的故障排除步骤是打开Chrome开发人员工具(ctrl-shift-i)并查看控制台中是否有任何错误。如果没有观察到任何有趣的东西,你需要编写自己的演示应用程序版本,这次有更好的错误处理。例如,apprtc演示假定某些事情不能被视为理所当然,例如,peerConnection.setLocalDescripton()
和peerConnection.setRemoteDescription()
将成功。在生产代码中,您确实需要在这些代码上实现成功和失败回调 - 这将为您提供有关可能出错的更好信息。
答案 2 :(得分:3)
AppRTC默认使用stun。 TURN是“更好的”(根据我的理解),但我记得Justin Uberti说公共TURN服务器可能会被误用(或者说会产生影响)。
STUN经常在企业级子网上失败,因为它无法“应对”不友好的NAT寻址。