您如何解决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尚未完全规定身份验证对等方的问题,但实现方式尚不存在。
如果你想用他们的IP连接到其他人,你应该通过你的服务器处理信号,否则你可能会使用像http://peerjs.com/这样的云服务器。理解webRTC并不简单,应该有一些网络知识去经历它。希望我们能够在稳定版本的webRTC中获得简单的API。 –
看看这些例子如何交换ICE候选数据。这是需要连接的同伴信息,您不能直接输入IP。额外的信息有助于穿越NAT和其他网络问题。 – ironfroggy
你如何计划让这些同伴找到对方? – ironfroggy