Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们如何知道webRTC何时已经完成收集ICE候选人_Webrtc_Kurento - Fatal编程技术网

我们如何知道webRTC何时已经完成收集ICE候选人

我们如何知道webRTC何时已经完成收集ICE候选人,webrtc,kurento,Webrtc,Kurento,我正在使用WebRTC连接Kurento媒体服务器(5.x版) 初始化期间,kurento utils js库中的简化代码如下所示: if (!this.pc) { this.pc = new RTCPeerConnection(server, options); } var ended = false; pc.onicecandidate = function(e) { // candidate exists in e.candidate if (e.candidat

我正在使用WebRTC连接Kurento媒体服务器(5.x版)

初始化期间,kurento utils js库中的简化代码如下所示:

if (!this.pc) {
    this.pc = new RTCPeerConnection(server, options);
}

var ended = false;
pc.onicecandidate = function(e) {
    // candidate exists in e.candidate
    if (e.candidate) {
        ended = false;
        return;
    }

    if (ended) {
        return;
    }

    var offerSdp = pc.localDescription.sdp;
    console.log('ICE negotiation completed');

    self.onsdpoffer(offerSdp, self);

    ended = true;
};
我的问题是,它似乎在等待,直到
onicecandidate
传递“null”值,该值表示过程已结束,因此能够继续创建SDP报价,但我在WebRTC规范中找不到这种行为

我的下一个问题是,我们如何才能知道找到ice候选人的过程已经结束


我办公室的一台电脑无法访问代码
console.log(“ICE协商完成”)作为空值。

您可以检查iceGatheringState属性(在chrome中运行):

var-config={'iceServers':[{url:'stun:stun.l.google.com:19302'}];
var pc=新的WebKitRTPeerConnection(配置);
pc.onicecandidate=函数(事件){
if(event&&event.target&&event.target.iceGatheringState==='complete'){
警报(“收集候选人完成-获取ICEGartingState完成”);
}else if(event&&event.candidate==null){
警报('完成收集候选对象-获取空候选对象');
}否则{
日志(event.target.iceGatheringState,事件);
}
};
pc.createOffer(功能(提供){
pc.setLocalDescription(报价);
},函数(err){
控制台日志(err);
},{'mandatory':{'OfferToReceiveAudio':true});

window.pc=pc您可以检查iceGatheringState属性(在chrome中运行):

var-config={'iceServers':[{url:'stun:stun.l.google.com:19302'}];
var pc=新的WebKitRTPeerConnection(配置);
pc.onicecandidate=函数(事件){
if(event&&event.target&&event.target.iceGatheringState==='complete'){
警报(“收集候选人完成-获取ICEGartingState完成”);
}else if(event&&event.candidate==null){
警报('完成收集候选对象-获取空候选对象');
}否则{
日志(event.target.iceGatheringState,事件);
}
};
pc.createOffer(功能(提供){
pc.setLocalDescription(报价);
},函数(err){
控制台日志(err);
},{'mandatory':{'OfferToReceiveAudio':true});
window.pc=pc

4.3.1

“如果ICE代理的目的是通知脚本:

[……]

  • 收集过程已经完成
将连接的ice收集状态设置为completed,并将newCandidate设置为null。“

因此,您可以根据“已完成”(在现实生活中,这不是非常可靠)检查冰收集状态,或者等待空候选(超级可靠)。

4.3.1

“如果ICE代理的目的是通知脚本:

[……]

  • 收集过程已经完成
将连接的ice收集状态设置为completed,并将newCandidate设置为null。“


因此,您可以根据“已完成”检查集冰状态(在现实生活中,这不是非常可靠),或者等待空候选集(超级可靠)。

在哪个设置未完成?我们已经使用该库一年多了,以前从未见过。在任何情况下,KMS6都使用涓流冰,所以升级可能比尝试修复要好。哪个安装程序没有完成?我们已经使用该库一年多了,以前从未见过。在任何情况下,KMS6都使用涓流冰,因此升级可能比尝试修复要好。该库正在等待一个空候选,所以奇怪的是它没有得到该候选…该库正在等待一个空候选,所以奇怪的是它没有得到该候选…我认为在FF中这不是很可靠,至少在一些版本之前。我认为在FF中这不是很可靠,至少在一些版本之前。