代码之家  ›  专栏  ›  技术社区  ›  shauna vayne

webrtc事件触发器

  •  0
  • shauna vayne  · 技术社区  · 3 年前

    我想知道为什么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{},本地描述

    1 回复  |  直到 3 年前
        1
  •  0
  •   shauna vayne    3 年前

    一个可能的答案是,在第一种情况下,连接上没有连接MediaStreamTrack