您如何解決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