轉載來自: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)
