RTCPeerConnection.onIcecandidate() 事件的触发时机是什么?
RTCPeerConnection.onIcecandidate() 三类触发场景验证
RTCPeerConnection.onIcecandidate 事件的核心触发时机是本地ICE代理收集到新的可用网络候选地址时,需要将候选传递给对等端完成ICE协商。你提到的三个场景的触发情况如下:
- 场景1:将SDP设置为本地SDP时
该操作本身不会直接触发onIcecandidate事件。调用setLocalDescription成功后会启动ICE候选收集流程,后续每收集到一个可用候选,就会触发一次onIcecandidate事件;所有候选收集完成时,还会额外触发一次event.candidate为null的事件,标志本次收集结束。 - 场景2:将应答设置为remoteDescription时
常规场景下该操作不会触发onIcecandidate事件。仅当传入的远端应答SDP携带ICE重启标识(即ice-ufrag、ice-pwd字段和此前协商的值不一致),触发了ICE重启流程时,才会重新启动本地候选收集,进而触发onIcecandidate事件。 - 场景3:任意数据或媒体流被添加到RTCPeerConnection时
该操作本身不会直接触发onIcecandidate事件。添加媒体流、媒体轨道或者RTCDataChannel只会修改本地会话的协商要求,需要你后续主动发起SDP重协商(调用createOffer/createAnswer生成新SDP,再执行setLocalDescription)后,才会启动ICE候选收集流程,进而触发对应事件。
内容的提问来源于stack exchange,提问作者user3519714
相关产品推荐
相关产品推荐

