我想知道为什么webrtc会有这种行为:
创建对等连接后,我声明onicecandidate事件处理程序,它将记录连接的本地描述。然后,我创建一个offer,并将返回的sdp设置为连接的本地描述。事件处理程序被触发,但本地描述永远不会被记录。然而,每当我在创建报价之前创建数据通道时,控制台上都会返回本地描述。有人能解释一下为什么会发生这种情况吗?
无数据通道的示例
const lc = new RTCPeerConnection();
lc.onicecandidate = e => console.log(JSON.stringify(lc.localDescription));
lc.createOffer().then(o=>lc.setLocalDescription(o)).then(console.log('offer set'))
控制台返回:
承诺{}
数据通道示例
const lc = new RTCPeerConnection();
lc.onicecandidate = e => console.log(JSON.stringify(lc.localDescription));
lc.createDataChannel("xan")
lc.createOffer().then(o=>lc.setLocalDescription(o)).then(console.log('offer set'))
控制台返回:Promise{},本地描述