如何指示远程候选人的结束?

时间:2018-08-01 19:43:13

标签: javascript google-chrome webrtc sip p2p

对于WebRTC应用程序,我想表示,使用Trickle ICE时不再有远程候选人。 W3C WebRTC spec says

  

此方法还可以用于在使用候选成员的空字符串调用远程候选者时指示结束

  

这可以通过用候选值(其候选属性设置为空字符串)调用addIceCandidate来表明

  

如果候选人。候选人为空字符串,则将候选人作为候选人结束指示处理

  

如果此RTCIceCandidate表示候选结束指示,则候选人为空字符串。

因此,我在Chrome 67中尝试了不同的方法,但它们都不起作用:

pc.addIceCandidate('');
  

TypeError:无法在'RTCPeerConnection'上执行'addIceCandidate':提供的值不是'(RTCIceCandidateInit或RTCIceCandidate)'类型的

pc.addIceCandidate({candidate:''});
  

TypeError:候选值缺少sdpMid和sdpMLineIndex

pc.addIceCandidate(new IceCandidate());
  

无法构造“ RTCIceCandidate”:需要1个参数,但只能有0个。

pc.addIceCandidate(new IceCandidate(''));
  

无法构造'RTCIceCandidate':参数1('candidateInitDict')不是对象。

pc.addIceCandidate(new IceCandidate({}));
  

DOMException:无法构造'RTCIceCandidate':'candidate'属性不是字符串,或者为空。

pc.addIceCandidate(new IceCandidate({candidate:''}));
  

DOMException:无法构造'RTCIceCandidate':'candidate'属性不是字符串,或者为空。

问题:我如何指示远程候选人的结束?

[编辑]:

在2016/2017年,它仅为null

  

工作组决定保留此特殊的“所有收集已完成”,以实现向后兼容的空候选”

似乎不再起作用:

pc.addIceCandidate(null);
  

TypeError:候选值缺少sdpMid和sdpMLineIndex

pc.addIceCandidate({candidate: null});
  

TypeError:候选值缺少sdpMid和sdpMLineIndex

1 个答案:

答案 0 :(得分:0)

没有浏览器实现该规范,并且该规范几次更改了意见。 https://github.com/webrtc/adapter将忽略addIceCandidate(null),这是Microsoft Edge中最需要的。