【问题标题】:What is the most up-to-date method of establishing multiple peer-to-peer connections using WebRTC?使用 WebRTC 建立多个对等连接的最新方法是什么?
【发布时间】:2013-06-17 18:21:50
【问题描述】:

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

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

谁能解释一下这是如何实现的?我一直在阅读resources on the WebRTC Experiments site,我需要做一些关于offer或其他事情的事情,但我不太了解。

【问题讨论】:

  • 如果您想使用他们的 IP 连接到其他人,您应该通过您的服务器处理信令,否则您可以使用云服务器,如 peerjs.com。了解webRTC并不简单,应该有一些网络知识才能过一遍。希望我们能在稳定版的 webRTC 中获得简单的 API。
  • 查看示例如何交换 ICE 候选数据。这是连接所需的对等点的信息,您不能直接输入 IP。额外信息有助于解决 NAT 和其他网络问题。
  • 你打算如何让这些同行找到彼此?
  • @ironfroggy 你能链接/给我看这个 ICE 候选交换代码的示例 sn-p。我打算在我的代码中包含一个引导机制(一组初始 IP 地址)

标签: javascript html p2p webrtc


【解决方案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 和特别是 TURN 发挥作用时)。

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

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

【讨论】:

  • 谢谢,这是一个很好的答案。您能否解释一下与 IP 地址相比,用于寻址特定 WebRTC 浏览器客户端的等效网络标识符是什么?
  • 对不起,我刚刚阅读了您对我之前评论的回答,我认为您误解了。我具体要问的是,给定两个节点 A 和 B,以及一个信令通道 S,在 A 和 B 之间建立 RTCPeerConnection 需要哪些信息。
  • 也许你应该退后一步,看看一些如何建立连接的例子(例如html5rocks.com/en/tutorials/webrtc/basics)。尤其是createOffer、setLocalDescription、createAnswer和setRemoteDescription这几个方法也是看的。
猜你喜欢
  • 2017-08-25
  • 2022-01-18
  • 2021-08-29
  • 2014-03-14
  • 2019-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多