2015-11-28 25 views
5

我需要開發一個自定義的WebRTC對等體(我需要在網絡瀏覽器和非瀏覽器之間建立音頻或/和數據連接)。然而,我很難找到握手階段的恰當,清晰的描述。WebRTC如何看待對等協商工作流程?

對諸如How to create data channel in WebRTC peer connection?等問題的回答並不完全有幫助,因爲它們不太詳細。具體來說,他們沒有提到SDP的內容。

任何人都可以解釋這個或推薦任何好的文檔?

+0

你指的信號? – nick

+0

是的。我明白,我的職責是建立一個渠道,以初步向同行交付報價/答案,但我找不到詳細的說明如何構建這些消息。 – mspanc

+1

從ICE開始:https://tools.ietf.org/html/rfc5245 - 它還涵蓋了SDP的基本時刻。基本上,你需要從ICE和STUN/TURN開始,然後繼續SDP。在那個階段,您的應用程序將能夠與SDP數據包進行交換並通過信令階段。之後,您將需要爲您的客戶實現DTLS協議支持。然後是SRTP/SCTP。 – fycth

回答

8

Here is a page with some graphs showing how the signaling process works。基本上,你首先設置一些客戶端的東西:

  • PeerConnectionFactory;生成PeerConnections,
  • PeerConnection;一個用於連接到另一個對等點的所有連接(通常爲1),
  • MediaStream;連接來自客戶端設備的音頻和視頻。

然後生成SDPoffer

peerConnection.createOffer(); 
在發送方

,並將其發送到被叫方。被叫方設置此offer

peerConnection.setRemoteDescription(insert-the-offer-here); 

併產生SDPanswer

peerConnection.createAnswer(); 

並將其發送回給調用者。來電者收到此answer並設置它。

peerConnection.setRemoteDescription(insert-the-answer-here); 

無論是主叫方和被叫方得到

onAddStream() {...} //needs to be implemented in your code 

被調用時,主叫方的offer設置呼叫與被叫方的answer設置來電。該回調信號表示連接的開始。
您也可以使用ICESTUN/TURN)來避免firewallNAT問題,但這是可選的。儘管在生產代碼中,您可能想要實現它。

注:文件的WebRTC是稀缺的,如有更改,帶你瞭解的WebRTC(至少現在事情寫成的)用一粒鹽的一切......