WebRTC需要通过长链接查找到通信双方,然后通过 peer to peer 的方式传输音频数据。
PeerConnection
PeerConnection
是WebRTC中封装的对象。每一路的音视频会话都会有唯一的一个PeerConnection
对象,WebRTC通过这个PeerConnection
对象进行视频的发起、传输、接收和挂断等操作。
PeerConnection中包含的属性如下:
RTCSessionDescription
RTCSessionDescription
RTCIceCandidateEvent
,PeerConnection
中,参数类型:RTCSessionDescription
answer
,将对方的描述信息加入到PeerConnection
中,参数类型:RTCSessionDescription
answer
,需要传入两个参数,第一个参数是创建answer
成功的回调方法,会返回创建好的answer
,可以在这里将这个answer
发送出去。第二个参数是创建失败的回调方法,会返回错误信息。RTCIceCandidate
PeerConnection
中加入需要发送的数据流,参数类型:MediaStream
RTCSessionDescription
RTCSessionDescription
类型中包含了两个属性:
通信过程
A向B发起通信请求
Ice Candidate
;Ice Candidate
创建一个PeerConnection
;offer
,offer
中包含了视频设置sdp
,将创建好的offer
设置为PeerConnection
的localDescription
;offer
和Ice Candidate
通过socket发送给B;PeerConnection
;offer
,那么先将offer
存起来,等到接收到A发过来的Ice Candidate
后通过Ice Candidate
创建一个PeerConnection
,再将保存好的offer
设置为PeerConnection
的remoteDescription
。如果B先接收到A发过来的
Ice Candidate
,那么通过A发过来的Ice Candidate
创建一个PeerConnection
,然后等待接收到A发过来的offer
,再将A发过来的offer
设置为PeerConnection
的remoteDescription
;offer
后要创建一个answer
,将answer
设置为PeerConnection
的localDescription
。并且将创建的answer
通过socket返回给A。PeerConnection
中,WebRTC便会自动将音频数据发送给A。answer
,将B返回的answer
设置为PeerConnection
的remoteDescription
。本文链接地址: WebRTC通信原理