WebRTC是否需要在局域网内使用STUN服务器?

17
我已经开发了一个使用WebRTC的P2P视频聊天应用。我知道需要使用STUN或TURN服务器来识别NAT后面的公共IP地址。目前我正在使用谷歌的STUN服务器。
我在连接到LAN的服务器上安装了该应用程序,该服务器将无法访问互联网。我是否需要在我的服务器上安装STUN服务器才能使WebRTC视频聊天在LAN内工作?

你能否像在向Sam提问时那样,在局域网中配置主机上的候选项? - ceztko
2个回答

12

节点应该能够在同一局域网中(在NAT的同一侧)无需使用STUN而进行连接,即使用主机候选项。请尝试一下!


2
谢谢你的帖子,能否详细说明如何使用主机候选项来实现。 - Mano
7
var peer = new PeerConnection(iceServers, optional);其中 iceServers = null,这可以在没有互联网的情况下工作。 - Mano
请注意,在Android API上,iceServers不能为null或Collections.EMPTY_LIST。必须是一个新的ArrayList()或类似的对象。 - aaronvargas
1
我回答自己:在互联网上,如果主机2的TCP/UDP端口是开放/可达的,则从主机1到主机2的WebRTC通信理论上是可能的,而无需使用STUN/TURN。但是客户端仍然需要找出主机2的真实公共IP地址,因为主机2无法可靠地提供它,这是一些浏览器客户端无法做到的。基本上,这将需要一个不存在的自定义WebRTC实现。 - ceztko
@ceztko能否说明一下为什么host2不能可靠地提供自己的IP?您是指在隔离的本机js窗口/浏览器环境中,具有正常访问和沙盒功能吗?如果我理解正确,这可以完成,但可能需要像通过浏览器扩展程序这样的低级访问权限,以能够获取真实的公共IP,对吗?当然也可以像通过ajax访问whatismyip.com那样进行ping,但也可以执行STUN / TURN。 - ineedhelp
显示剩余2条评论

2

一般情况下,您不需要使用STUN服务器。但是,根据防火墙配置的不同,您可能实际上需要STUN(甚至是TURN)。例如,在SFHTML5 WebRTC Hackathon中,我们使用的是一个企业访客WiFi网络,它会阻止本地UDP和TCP流量。在这种情况下,成功进行通话需要使用TURN服务器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接