Trickle ICE - 选择候选人

Trickle ICE - choose candidate

在WebRTC中,ICE候选项是如何选择和使用的?如果添加了新的候选人,将使用它,如果是,什么时候?

需要使用信令将新收集的候选者通告到另一端,然后它将与两端的远程候选者配对并重新启动新对的 ICE 处理。如果任何一对获得成功并且 ICE 设置的优先级值高于现有的 selected 候选者,则提供者端将 select 这个新对作为受欢迎的和 selected 候选者并开始使用这对新的 selected 候选人。有时可能需要通过信令使用 selected 候选人发送更新的报价。

发送更新的 offer/answer 取决于客户端或 ICE 实现的设计或实现。基本上,对于与初始 offer/answer 中的 ICE 属性相关的任何更改,都需要更新报价。根据 RFC,当 ICE 候选人被 selected 时,提议者端应将 "a=remote-candidates" 包含在 selected 候选人中,并交换更新后的 offer/answer。如果客户没有明确要求更新的报价作为远程候选人的指示,那么不发送任何更新的报价就可以了,您可以尝试不发送它,看看会发生什么。如果您始终发送更新的报价,并且其他客户端可以解析并识别属性,这应该是无害的。

在 FF 或 Chrome WebRTC (Trickle ICE) 的浏览器默认实现中,您无需担心更新的候选者,因为当 ICE 候选者可用于检索时,客户端将收到事件,因此您只会检索它并发送到另一端。对于重新邀请的情况,一旦 ICE 状态进入 Controlling (Of​​ferer) 端的 "completed" 状态,就调用 createOffer。