【问题标题】:Chrome does not generate the ice candidate , WebRTCChrome 不生成候选冰,WebRTC
【发布时间】:2020-04-04 13:28:17
【问题描述】:

我正在尝试在 local 使用 Chrome 到 Chrome 浏览器的两个对等方之间建立视频通话,而不是使用 STUN/TURN服务器。

假设第一个同伴的名字是“Sara”,她以呼叫者的身份进行视频通话。 第二个同伴的名字是“Bill”,他是一个观众,只看 Sara 的视频。

1- Sara 的计算机生成一个报价并使用pc.setLocalDescription(offer) 将其设置为本地描述。

2- 它使用信令服务器向 Bill 发送生成的报价。

3- 比尔的计算机使用pc.setRemoteDescription(offer) 将来自 Sara 的传入报价设置为远程描述。

4- Bill 生成一个答案并将其设置为本地描述。

5- Bill 使用信令服务器将生成的答案发送给 Sara。

6- Sara 得到答案并将其设置为远程描述。

我已经为双方的那些冰候选人定义了一个事件监听器:

pc.onicecandidate = (event)=>{
   console.log("Event : ",event);
   pc.addIceCandidate(event.candidate);
};

在 Chrome 中它从不调用 pc.onicecandidate,我的意思是 onicecandidate 从不执行和记录,但在 Firefox 中它记录一个其 candidate 属性等于 null 的事件对象。

请有人告诉我pc.onicecandidate = (event)=>... 何时调用?

【问题讨论】:

    标签: javascript node.js express webrtc p2p


    【解决方案1】:

    当 setLocalDescription() 成功时,onicecandidate 调用。

    在onececandidate中,事件参数将有自己的候选人。

    所以你必须将 Sara 的候选人发送给 Bill,反之亦然。

    如果 Sara 或 Bill 收到对手的候选人,则必须将该候选人添加到 pc。

    const pc = new RTCPeerConnection();
    
    pc.onicecandidate = evt => {
        // send evt.candidate to opponent
        // you don't need to add own candidate self.
    };
    
    ...
    
    pc.createOffer().then(sdp => {
        pc.setLocalDescription(sdp); // onicecandidate invokes !
        // send sdp to opponent.
    }).catch(err => console.error(err));
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-27
      • 1970-01-01
      相关资源
      最近更新 更多