WebRTC - JSEP:无法连接两个不同网络之间的对等体

时间:2012-12-19 15:57:04

标签: webrtc

我不知道是否有人发过这个,但我不想问。我的问题是这样的:

  • 我可以使用两个Chrome标签(这意味着我自己调用)从apprtc.appspot.com上使用视频聊天。一切都运作良好。
  • 如果那些笔记本电脑在同一个网络上,我也可以使用apprtc和两台不同的笔记本电脑。我用我大学的网络代理。
  • 但是,如果我在调制解调器上使用一台笔记本电脑,而在局域网上使用另一台笔记本电脑,则apprtc无效。

有人可以解释发生了什么吗?这是STUN / ICE的问题吗?还是JSEP?

3 个答案:

答案 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寻址。