3

这是我当前的问题:我一直在浏览多个 WebRTC 资源,浏览 Google 的实验和 Mozilla 的实验,但我还没有找到如何做到这一点的简单解释。我也无法理解 WebRTC 的基本架构。

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

谁能解释如何实现这一目标?我一直在阅读WebRTC Experiments 网站上的资源,我需要用优惠或其他东西做一些事情,但我不太了解。

4

1 回答 1

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/以获取“服务器- less" WebRTC) 用于建立连接。一旦您的所有节点通过 RTCPeerConnections(例如作为链)相互连接,您就可以使用这些连接来建立进一步的连接(即通过这些连接传输 SDP 提议/答案)。

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

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

您可以使用 sth 而不是 IP 地址。就像一个 UUID ( http://en.wikipedia.org/wiki/UUID )。另外,你也可以使用 sth。如果您的所有用户都以某种方式进行了身份验证,则类似于用户的电子邮件地址。但请记住,IETF/W3C 还没有完全指定对等点的身份验证问题,并且还没有实现。

于 2013-06-17T07:53:03.270 回答