3.5.1. ICE Gathering Overview (ICE 収集概要)
3.5.1. ICE Gathering Overview (ICE 収集概要)
JSEP は, アプリケーションが必要とする ICE 候補を収集します。ICE 候補の収集は収集フェーズと呼ばれ, ローカルセッション記述への新しいまたはリサイクルされた "m=" セクションの追加, または記述内の新しい ICE 認証情報 (ICE 再起動を示す) によってトリガーされます。新しい ICE 認証情報の使用は, アプリケーションによって明示的にトリガーされるか, ICE 設定の変更に応答して JSEP 実装によって暗黙的にトリガーされます。
ICE 設定が新しい収集フェーズを必要とする方法で変更されると, 'needs-ice-restart' ビットが設定されます。このビットが設定されると, createOffer API への呼び出しは新しい ICE 認証情報を生成します。このビットは, offer または answer からの新しい ICE 認証情報を使用して setLocalDescription API を呼び出すことでクリアされます。つまり, ローカルまたはリモートで開始された ICE 再起動からクリアされます。
新しい収集フェーズが開始されると, ICE エージェントは状態変更イベントを通じて収集が発生していることをアプリケーションに通知します。次に, 新しい ICE 候補が利用可能になるたびに, ICE エージェントは onicecandidate イベントを介してそれをアプリケーションに提供します; これらの候補は, 現在および/または保留中のローカルセッション記述にも自動的に追加されます。最後に, すべての候補が収集されると, 最終的な onicecandidate イベントがディスパッチされ, 収集プロセスが完了したことを通知します。
収集フェーズは, 新しい/リサイクルされた/再起動する "m=" セクションに必要な候補のみを収集することに注意してください; 他の "m=" セクションは既存の候補を引き続き使用します。また, "m=" セクションがバンドルされている場合 (成功したバンドルネゴシエーションによって, または bundle-only としてマークされることによって), その MID アイテムが BUNDLE-tag である場合に限り, その "m=" セクションの候補が収集および交換されます。[RFC8843] で説明されているとおりです。