孤立局域网上的webRTC - 没有冰/眩晕/转向服务器

时间:2015-06-09 20:41:50

标签: real-time webrtc

请帮忙!在隔离的LAN上,有没有什么方法可以简单地使用DHCP服务器分配的IP地址建立webRTC连接?我在学校里有一个孩子的教室,里面有针对学生无线上网的政策。我也有自己的网络应用程序,我可以在室内无线网络上托管,我想使用它,这样我就可以在我自己的浏览器中获得实时学生回复。一旦他们进入我的浏览器,我就可以使用localStorage缓存它们,并打开一个评估可能性的世界。

我知道我可以使用Node.js和Socket.io完成此任务 - 但我真的希望避免使用我有限的技能设置那种服务器。我是一名学习编程的科学老师,所以请随意“保持简单”。谢谢!!

更新

Alex,你是对的,如果所有的计算机都在同一个本地网络上,我可以避免使用STUN服务器。虽然我不得不咬紧牙关并在笔记本电脑上安装Node.js,但实际上并不复杂。然后,我尝试了一大堆不起作用的“工作示例”,直到找到this one和他的GitHub files

在Node中运行服务器脚本后,我在同一台计算机上的两个浏览器窗口之间有一个DataChannel连接,但在不同的计算机之间没有。我编辑.html文件指向我的本地服务器IP地址而不是“localhost”,然后我可以连接多台计算机!然后是真正的测试 - 我可以在没有互联网连接的情况下使用它吗?我找到了使用Google的STUN服务器指定的行并从

更改了它

var config = {"iceServers":[{"url":"stun:stun.l.google.com:19302"}]};

var config = {"iceServers":[]};

它奏效了。 : - )

2 个答案:

答案 0 :(得分:2)

省略iceServers列表:

const pc = new RTCPeerConnection();

要么从iceServers构造函数中删除RTCPeerConnection列表,要么将其设为空列表[]

来自RTCPeerConnection文档:

  

iceServers |可选

     

一组RTCIceServer对象,每个对象描述一个可以由ICE代理使用的服务器;这些通常是STUN和/或TURN服务器。如果未指定,则将尝试在没有可用的STUN或TURN服务器的情况下进行连接尝试,这会将连接限制为本地对等方。

webrtc / samples演示

WebRTC project有一个Trickle ICE示例,您可以用来查看iceServers中的更改如何影响收集的候选地址。您要查看的特定样本是。

  1. 按页面底部的收集候选对象按钮以默认设置运行它。这将返回一个地址列表,其中包括NAT的公共端地址。

    Default ICE Servers

  2. 现在从列表中删除所有ICE服务器,然后再次按收集候选对象,这一次您应该只看到本地网络地址。

    No ICE Servers

请注意,在我的网络上,只有当我使用默认的ICE服务器时,才会出现2个公共IPv4地址(以98开头)。当我使用空的ICE服务器列表时,不再发现我的公共IPv4地址。另一方面,我的IPv6地址在两个测试中都相同,因为它们不受NAT的限制。

这里是link to the source code that sets up iceServers and PeerConnection

答案 1 :(得分:0)

Alex,你说得对,如果所有计算机都在同一个本地网络上,我可以避免使用 STUN 服务器。虽然我不得不硬着头皮在我的笔记本电脑上安装 Node.js,但这并不复杂。然后我尝试了一大堆对我不起作用的“工作示例”,直到我找到了这个和他的 GitHub 文件。

在 Node 中运行服务器脚本后,我在同一台机器上的两个浏览器窗口之间建立了 DataChannel 连接,但在不同计算机之间没有。我编辑了 .html 文件以指向我的本地服务器 IP 地址而不是 localhost,然后我可以连接多台计算机。然后是真正的测试 - 我可以在没有互联网连接的情况下使用它吗?我找到了使用 Google 的 STUN 服务器指定的行并将其更改为

var config = {"iceServers":[{"url":"stun:stun.l.google.com:19302"}]};

只是

var config = {"iceServers":[]};