webrtc - WebRTC对等协商工作流的外观如何?

标签 webrtc

我需要开发一个自定义WebRTC对等体(我需要在Web浏览器和非浏览器之间建立音频或/和数据连接)。但是,我很难找到对握手阶段的正确而清晰的描述。

对诸如How to create data channel in WebRTC peer connection?之类的问题的答案并不完全有用,因为它们不太详细。具体来说,他们对SDP内容一无所获。

任何人都可以解释一下或推荐任何好的文档吗?

最佳答案

Here is a page with some graphs showing how the signaling process works。基本上,您首先要设置一些客户端内容:

  • PeerConnectionFactory;生成PeerConnections,
  • PeerConnection;一个连接到您想要的另一个对等节点(通常为1),即
  • MediaStream;从客户端设备连接音频和视频。

  • 然后您生成一个SDP offer
    peerConnection.createOffer();  
    

    在调用方,然后将其发送给被调用方。被叫方设置此offer
    peerConnection.setRemoteDescription(insert-the-offer-here);
    

    并生成一个SDP answer
    peerConnection.createAnswer();
    

    并将其发送回调用者。调用者会收到此answer并进行设置。
    peerConnection.setRemoteDescription(insert-the-answer-here);
    

    主叫方和被叫方均会接到一个调用
    onAddStream() {...} //needs to be implemented in your code
    

    设置了调用者的offer时的被叫方和设置了被调用者的answer时的被叫方。该回调表示连接的开始。
    您也可以使用ICE(STUN/TURN)来避免firewallNAT问题,但这是可选的。尽管在生产代码中,您可能还是想要实现它。

    注意:Webrtc文档非常稀缺,并且随时可能更改,请花一点时间来阅读您所阅读的有关Webrtc的所有内容(至少是到目前为止编写的所有内容)...

    关于webrtc - WebRTC对等协商工作流的外观如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33974667/

    相关文章:

    c++ - Chrome 中的最大 RTCDataChannels

    javascript - WebRTC dataChannel.readyState 在 "connecting"上停止

    javascript - 远程视频黑屏: WebRTC

    linux - 为 ARM 交叉编译 WebRTC

    javascript - 是否未检测到 turnserver?

    android - Chromium WebView : "CheckMediaAccessPermission: Not supported" 内的 WebRTC 错误

    javascript - 漏洞报告者 : Alternatives to getDisplayMedia?

    webrtc - 客户端-服务器 WebRTC 应用程序是否需要 ICE?

    android - WebRTC 添加远程流到 PeerConnection

    javascript - RTCDataChannel 发送方法不发送数据