2013-06-01 66 views
2

這是我目前的問題:我一直在瀏覽多個WebRTC資源,通過谷歌實驗和類似的Mozilla瀏覽器,但我還沒有找到如何做到這一點的簡單解釋。我也無法理解WebRTC的基本體系結構。什麼是使用WebRTC建立多個點對點連接的最新方法?

我想要做的是構建一個點對點覆蓋,其中每個節點是一個瀏覽器。這些節點中的每一個都會接受所有傳入的連接,並能夠使用其IP地址連接到其他節點。他們只會通過DataChannel來溝通。與我一直在閱讀的許多示例不同,我不想依賴任何服務器進行信號傳輸,只需要那些用於顛覆NAT的應用程序(如STUN服務器)。

任何人都可以解釋這可能是如何實現的嗎?我一直在閱讀resources on the WebRTC Experiments site,我需要做點什麼,但是我不太瞭解。

+0

如果你想用他們的IP連接到其他人,你應該通過你的服務器處理信號,否則你可能會使用像http://peerjs.com/這樣的雲服務器。理解webRTC並不簡單,應該有一些網絡知識去經歷它。希望我們能夠在穩定版本的webRTC中獲得簡單的API。 –

+1

看看這些例子如何交換ICE候選數據。這是需要連接的同伴信息,您不能直接輸入IP。額外的信息有助於穿越NAT和其他網絡問題。 – ironfroggy

+0

你如何計劃讓這些同伴找到對方? – ironfroggy

回答

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和esp.TURN起作用時)。

編輯回答問題的評論:

取而代之的是IP地址,你可以使用某物。像UUID(http://en.wikipedia.org/wiki/UUID)。另外,你也可以使用某物。如果您的所有用戶都以某種方式進行了身份驗證,則會像用戶的電子郵件地址一樣。但請記住,IETF/W3C尚未完全規定身份驗證對等方的問題,但實現方式尚不存在。

+0

謝謝,這是一個很好的答案。你能解釋一下,與IP地址相比,尋址特定WebRTC瀏覽器客戶端的等效網絡標識符是什麼? – liamzebedee

+0

對不起,我剛剛閱讀您對我以前的評論的答案,我認爲你誤會了。我所特別提出的是,給定兩個節點A和B以及一個信令通道S,建立A和B之間的RTCPeerConnection需要什麼信息。 – liamzebedee

+0

也許你應該退後一步,看看如何實現建立連接(例如http://www.html5rocks.com/en/tutorials/webrtc/basics/)。特別是createOffer,setLocalDescription,createAnswer和setRemoteDescription是太方法。 – Makkes

相關問題