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

3
这是我的当前问题:我一直在浏览多个WebRTC资源,查看Google实验以及Mozilla的实验,但我还没有找到一个简单明了的解释。我也很难理解WebRTC的基本架构。
我想做的是构建一个点对点的覆盖网络,其中每个节点都是一个浏览器。这些节点将接受所有传入连接,并能够使用其IP地址连接到其他节点。它们将仅通过DataChannel进行通信。与我阅读的许多示例不同,我不想依赖任何服务器来进行信令,只需要用于规避NAT的必要服务器(如STUN服务器)。
有人可以解释如何实现这一点吗?我一直在阅读WebRTC实验站点上的资源resources on the WebRTC Experiments site,需要做一些关于提供或其他内容的事情,但我还没有完全理解。

如果您想使用其他人的IP地址进行连接,您应该通过您的服务器处理信令,否则您可以使用像http://peerjs.com/这样的云服务器。理解WebRTC并不简单,需要一些网络知识来深入了解它。希望我们能在WebRTC的稳定版本中获得简单的API。 - kongaraju
1
看一下这些示例如何交换ICE候选数据。这是连接所需的对等方信息,您不能直接输入IP地址。额外的信息有助于穿越NAT和其他网络问题。 - ironfroggy
你打算如何让这些节点相互发现? - ironfroggy
@ironfroggy,你能否提供一个ICE候选交换的代码片段示例给我看一下?我打算在我的代码中包含引导机制(即初始IP地址集)。 - liamzebedee
1个回答

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地址,您可以使用类似UUID(http://en.wikipedia.org/wiki/UUID)的东西。此外,如果所有用户都以某种方式进行了身份验证,您也可以使用类似于用户电子邮件地址的内容。但请记住,身份验证对等方的问题仍未得到IETF / W3C的完全指定,并且尚不存在实现。

谢谢,这是一个好答案。您能解释一下与IP地址相比,用于寻址特定WebRTC浏览器客户端的等效网络标识符是什么吗? - liamzebedee
抱歉,我刚刚看到了你对我之前评论的回复,我认为你误解了我的问题。我具体询问的是,在给定两个节点A和B以及一个信令通道S的情况下,建立A和B之间的RTCPeerConnection所需的信息是什么。 - liamzebedee
也许你应该退一步,看一些建立连接的实例(例如http://www.html5rocks.com/en/tutorials/webrtc/basics/)。特别是createOffer、setLocalDescription、createAnswer和setRemoteDescription这些方法值得关注。 - Makkes

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