WebRTC中的RTCPeerConnection建立连接的过程
转载来自:https://www.cnblogs.com/dapplehou/p/14159878.html
- peerA (RTCPeerConnection对象) 调用createOffer方法准备创建SDP
- 在createOffer的回调方法里,同时做了这两件事
- 调 用peerA的setLocalDescription(description)方法,这个方法会触发peerA的icecandidate 监听方法handleConnection. 在这个方法里,会将peerA的icecandidate发送给peerB. 然后PeerB执行addIceCandidate(candidate),将peerA的candidate登记在案.
- 将peerA的description (就是SDP)发送给peerB
- peerB收到peerA发来的SDP,执行createAnswer,在这个回调方法里,同时做两件事
- 调用peerB的setLocalDescription(description)方法,这个方法会触发peerB的icecandidate监听方法handleConnection,在这个方法里,会将peerB的icecandidate发送给peerA. peerA收到后执行addIceCandidate(candidate),将peerB的candidate也登记
- 将peerB的SDP发送给peerA.
- peerA和peerB开始传递音视频流
总结:就是peerA和peerB互相交换iceCandidate和SDP的过程。
原文链接:https://blog.csdn.net/starcrm/article/details/52576388
本地和远端通讯的过程有些像电话,比如张三正在试着打电话给李四,详细机制:
张三创造了一个RTCPeerConnection 对象。
张三通过RTCPeerConnection createOffer()方法创造了一个offer(SDP会话描述) 。
张三通过他创建的offer调用setLocalDescription(),保存本地会话描述。
张三发送信令给李四。 只要本地代理ICE需要通过信令服务器传递信息给其他对等端时就会触发
李四接通带有李四offer的电话,调用setRemoteDescription() ,李四的RTCPeerConnection知道张三的设置(张三的本地描述到了李四这里,就成了李四的远程会话描述)。
李四调用createAnswer(),将李四的本地会话描述(local session description)成功回调。
李四调用setLocalDescription()设置他自己的本地局部描述。
李四发送应答信令answer给张三。
张三将李四的应答answer用setRemoteDescription()保存为远程会话描述(李四的remote session description)