跳到主要内容

4.1.19. addIceCandidate

4.1.19. addIceCandidate

addIceCandidate 方法通过 IceCandidate 对象(第 3.5.2.1 节)向 ICE 代理提供更新。如果 IceCandidate 的 candidate 字段非空, 则 IceCandidate 被视为新的远程 ICE 候选者, 它将根据为 Trickle ICE 定义的规则添加到当前和/或待处理的远程描述。否则, IceCandidate 被视为候选者结束指示, 如 [RFC8838] 第 14 节所定义。

在任何一种情况下, 来自提供的 IceCandidate 的 "m=" 部分索引, MID 和 ufrag 字段用于确定 IceCandidate 属于哪个 "m=" 部分和 ICE 候选者生成, 如上面第 3.5.2.1 节所述。在候选者结束指示的情况下, "m=" 部分索引和 MID 字段的空值被解释为指示该指示适用于指定 ICE 候选者生成中的所有 "m=" 部分。但是, 如果对于新的远程候选者两个字段都为空, 则必须将其视为无效条件, 如下所述。

如果任何 IceCandidate 字段包含无效值或在处理 IceCandidate 对象期间发生错误, 则必须忽略提供的 IceCandidate 并且必须返回错误。

否则, 将新的远程候选者或候选者结束指示提供给 ICE 代理。在新远程候选者的情况下, 假设已经调用 setLocalDescription 来初始化 ICE 收集过程, 将向新候选者发送连接检查。