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

Den*_*nis 6 javascript p2p google-chrome sip webrtc

对于 WebRTC 应用程序,我想表明,在使用 Trickle ICE 时不再有远程候选对象。在W3C的WebRTC规范说

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

这可以通过使用候选值调用 addIceCandidate 来指示,候选值的候选属性设置为空字符串

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

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

因此,我在 Chrome 67 中尝试了不同的方法,但没有一个有效:

pc.addIceCandidate('');
Run Code Online (Sandbox Code Playgroud)

类型错误:无法在“RTCPeerConnection”上执行“addIceCandidate”:提供的值不是“(RTCIceCandidateInit 或 RTCIceCandidate)”类型

pc.addIceCandidate({candidate:''});
Run Code Online (Sandbox Code Playgroud)

类型错误:sdpMid 和 sdpMLineIndex 的候选缺失值

pc.addIceCandidate(new IceCandidate());
Run Code Online (Sandbox Code Playgroud)

无法构建“RTCIceCandidate”:需要 1 个参数,但仅存在 0 个参数。

pc.addIceCandidate(new IceCandidate(''));
Run Code Online (Sandbox Code Playgroud)

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

pc.addIceCandidate(new IceCandidate({}));
Run Code Online (Sandbox Code Playgroud)

DOMException: 无法构造“RTCIceCandidate”:“候选”属性不是字符串,或者为空。

pc.addIceCandidate(new IceCandidate({candidate:''}));
Run Code Online (Sandbox Code Playgroud)

DOMException: 无法构造“RTCIceCandidate”:“候选”属性不是字符串,或者为空。

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

[编辑]:

在 2016/2017 年,它只是null

工作组决定保留这个特殊的“所有收集都已完成”为向后兼容的空候选”

看来,它不再起作用了:

pc.addIceCandidate(null);
Run Code Online (Sandbox Code Playgroud)

类型错误:sdpMid 和 sdpMLineIndex 的候选缺失值

pc.addIceCandidate({candidate: null});
Run Code Online (Sandbox Code Playgroud)

类型错误:sdpMid 和 sdpMLineIndex 的候选缺失值

Phi*_*cke 1

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