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 オブジェクトには, [RFC8839] のセクション 5.4 で定義されているように, それが関連付けられている ICE ユーザー名フラグメント (ufrag) を示すフィールドが含まれています。この値は, この IceCandidate がどのセッション記述 (したがってどの収集フェーズ) に属するかを判断するために使用され, ICE 再起動中の曖昧さの解決に役立ちます。受信した IceCandidate でこのフィールドが存在しない場合 (おそらく非 JSEP エンドポイントと通信しているとき), 最近受信したセッション記述が想定されます。
IceCandidate オブジェクトには, それが関連付けられている "m=" セクションを示すフィールドも含まれており, これは 2 つの方法のいずれかで識別できます: "m=" セクションインデックスまたは MID による識別です。"m=" セクションインデックスはゼロベースのインデックスであり, インデックス N はこの IceCandidate によって参照されるセッション記述内の N+1 番目の "m=" セクションを指します。MID は [RFC5888] のセクション 4 で定義されている "media stream identification" (メディアストリーム識別) 値であり, 関連付けられた RtpTransceiver オブジェクトの MID を使用して, セッション記述内の "m=" セクションを識別するより堅牢な方法を提供します (MID 属性をサポートしていない非 JSEP エンドポイントと対話するときに応答者がローカルで生成した可能性があります。以下のセクション 5.10 で説明されています)。受信した IceCandidate に MID フィールドが存在する場合, それを識別に使用しなければなりません; それ以外の場合は, "m=" セクションインデックスが代わりに使用されます。
実装は, 上記のように, いくつかのフィールドが欠けているオブジェクトを受信する準備をしておかなければなりません。