2015-11-28 15 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(至少现在事情写成的)用一粒盐的一切......