您如何在 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 还没有完全指定对等点的身份验证问题,并且还没有实现。