3.5.2.1. ICE Candidate Format (ICE 候选格式)
3.5.2.1. ICE Candidate Format (ICE 候选格式)
在 JSEP 中, ICE 候选由 IceCandidate 对象抽象表示, 与会话描述一样, 内部表示使用 SDP 语法。
候选详细信息在 IceCandidate 字段中指定, 使用与 [RFC8839] 第 5.1 节中定义的 "candidate-attribute" 字段相同的 SDP 语法。请注意, 此字段不包含 "a=" 前缀, 如以下示例所示:
candidate:1 1 UDP 1694498815 192.0.2.33 10000 typ host
IceCandidate 对象包含一个字段, 用于指示它与哪个 ICE 用户名片段 (ufrag) 相关联, 如 [RFC8839] 第 5.4 节中所定义。此值用于确定此 IceCandidate 属于哪个会话描述 (以及哪个收集阶段), 这有助于在 ICE 重启期间解决歧义。如果在接收到的 IceCandidate 中此字段缺失 (也许在与不支持 JSEP 的端点通信时), 则假定为最近接收到的会话描述。
IceCandidate 对象还包含字段以指示它与哪个 "m=" 段相关联, 可以通过以下两种方式之一进行识别: 通过 "m=" 段索引或通过 MID。"m=" 段索引是从零开始的索引, 索引 N 指的是此 IceCandidate 引用的会话描述中的第 N+1 个 "m=" 段。MID 是 "media stream identification" (媒体流标识) 值, 如 [RFC5888] 第 4 节中所定义, 它提供了一种更健壮的方式来识别会话描述中的 "m=" 段, 使用关联的 RtpTransceiver 对象的 MID (当与不支持 MID 属性的非 JSEP 端点交互时, 应答方可能在本地生成该 MID, 如下文第 5.10 节所述)。如果在接收到的 IceCandidate 中存在 MID 字段, 则必须将其用于识别; 否则, 使用 "m=" 段索引。
实现必须准备好接收某些字段缺失的对象, 如上所述。