2013-06-01 34 views
2

这是我目前的问题:我一直在浏览多个WebRTC资源,通过谷歌实验和类似的Mozilla浏览器,但我还没有找到如何做到这一点的简单解释。我也无法理解WebRTC的基本体系结构。什么是使用WebRTC建立多个点对点连接的最新方法?

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

任何人都可以解释这可能是如何实现的吗?我一直在阅读resources on the WebRTC Experiments site,我需要做点什么,但是我不太了解。

+0

如果你想用他们的IP连接到其他人,你应该通过你的服务器处理信号,否则你可能会使用像http://peerjs.com/这样的云服务器。理解webRTC并不简单,应该有一些网络知识去经历它。希望我们能够在稳定版本的webRTC中获得简单的API。 –

+1

看看这些例子如何交换ICE候选数据。这是需要连接的同伴信息,您不能直接输入IP。额外的信息有助于穿越NAT和其他网络问题。 – ironfroggy

+0

你如何计划让这些同伴找到对方? – ironfroggy

回答

1

您如何解决WebRTC中的节点完全取决于您,实现者,因为信号故意不在规范中。所以,如果你想通过IP地址来覆盖覆盖层中的节点,请继续。但是我认为你稍微误解了WebRTC中连接建立的工作原理,所以让我深入一点:

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

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

通过IP地址返回寻址节点:这不是一个好主意,因为有时你甚至不知道该地址(例如当STUN和esp.TURN起作用时)。

编辑回答问题的评论:

取而代之的是IP地址,你可以使用某物。像UUID(http://en.wikipedia.org/wiki/UUID)。另外,你也可以使用某物。如果您的所有用户都以某种方式进行了身份验证,则会像用户的电子邮件地址一样。但请记住,IETF/W3C尚未完全规定身份验证对等方的问题,但实现方式尚不存在。

+0

谢谢,这是一个很好的答案。你能解释一下,与IP地址相比,寻址特定WebRTC浏览器客户端的等效网络标识符是什么? – liamzebedee

+0

对不起,我刚刚阅读您对我以前的评论的答案,我认为你误会了。我所特别提出的是,给定两个节点A和B以及一个信令通道S,建立A和B之间的RTCPeerConnection需要什么信息。 – liamzebedee

+0

也许你应该退后一步,看看如何实现建立连接(例如http://www.html5rocks.com/en/tutorials/webrtc/basics/)。特别是createOffer,setLocalDescription,createAnswer和setRemoteDescription是太方法。 – Makkes

相关问题