使用WebRTC建立多个点对点连接的最新方法是什么?

时间:2013-06-01 03:19:43

标签: javascript html5 p2p webrtc

这是我当前的问题:我一直在浏览多个WebRTC资源,查看Google实验以及Mozilla实验,但我还没有找到如何执行此操作的简单说明。我也无法理解WebRTC的基本架构。

我想要做的是构建一个点对点覆盖,其中每个节点都是一个浏览器。这些节点中的每一个都将接受所有传入连接,并能够使用其IP地址连接到其他节点。他们只会通过DataChannel 进行沟通。与我一直在阅读的许多示例不同,我不想依赖任何服务器进行信令,只有那些用于破坏NAT的服务器(如STUN服务器)。

有谁可以解释如何实现这一目标?我一直在阅读resources on the WebRTC Experiments site,我需要用优惠或其他东西做点什么,但我不太了解。

1 个答案:

答案 0 :(得分:1)

如何解决WebRTC中的节点完全取决于您(实施者),因为信令是 - 故意 - 不在规范之内。因此,如果您想通过IP地址寻址覆盖中的节点,请继续。但我认为你有点误解了WebRTC中的连接建立是如何工作的,所以让我深入一点:

通过交换SDP消息(http://en.wikipedia.org/wiki/Session_Description_Protocol)来完成WebRTC连接建立。如果您希望一个浏览器与另一个浏览器建立PeerConnection,您必须找到一种方法将SDP消息(通过RTCPeerConnection#createOffer生成)发送到另一个浏览器。没有办法只打开与该浏览器的UDP连接(或者ICE无效)。

因此,对于加入覆盖网络的节点,您拥有以拥有中心点(让我们称之为服务器)或其他渠道(请查看https://github.com/cjb/serverless-webrtc/为“服务器”无连接“WebRTC”用于建立连接。只要所有节点通过RTCPeerConnections相互连接(例如作为链),就可以使用这些连接进一步建立连接(即通过这些连接传输SDP提供/答案)。

回到通过IP地址寻址节点:这不是一个好主意,因为有时你甚至不知道地址(例如,当STUN和特别是TURN开始发挥作用时)。

编辑以回答评论中的问题:

您可以使用某个IP地址代替IP地址。像UUID(http://en.wikipedia.org/wiki/UUID)。另外,你也可以使用某事。如果所有用户都以某种方式进行身份验证,则与用户的电子邮件地址类似。但请记住,IETF / W3C尚未完全指定对等体进行身份验证的问题,并且实现尚不存在。