3.5.2.1. ICE Candidate Format (Formato candidato ICE)
3.5.2.1. ICE Candidate Format (Formato candidato ICE)
In JSEP, i candidati ICE sono astratti da un oggetto IceCandidate e, come per le descrizioni di sessione, viene utilizzata la sintassi SDP per la rappresentazione interna.
I dettagli del candidato sono specificati in un campo IceCandidate, utilizzando la stessa sintassi SDP del campo "candidate-attribute" definito in [RFC8839], Sezione 5.1. Si noti che questo campo non contiene un prefisso "a=", come indicato nell'esempio seguente:
candidate:1 1 UDP 1694498815 192.0.2.33 10000 typ host
L'oggetto IceCandidate contiene un campo per indicare a quale frammento di nome utente ICE (ufrag) è associato, come definito in [RFC8839], Sezione 5.4. Questo valore viene utilizzato per determinare a quale descrizione di sessione (e quindi a quale fase di raccolta) appartiene questo IceCandidate, il che aiuta a risolvere le ambiguità durante i riavvii ICE. Se questo campo è assente in un IceCandidate ricevuto (forse quando si comunica con un endpoint non-JSEP), si presume la descrizione di sessione ricevuta più di recente.
L'oggetto IceCandidate contiene anche campi per indicare a quale sezione "m=" è associato, che può essere identificata in uno dei due modi: tramite un indice di sezione "m=" o tramite un MID. L'indice di sezione "m=" è un indice a base zero, con l'indice N che fa riferimento alla N+1esima sezione "m=" nella descrizione di sessione referenziata da questo IceCandidate. Il MID è un valore "media stream identification" (identificazione flusso multimediale), come definito in [RFC5888], Sezione 4, che fornisce un modo più robusto per identificare la sezione "m=" nella descrizione di sessione, utilizzando il MID dell'oggetto RtpTransceiver associato (che potrebbe essere stato generato localmente dal rispondente durante l'interazione con un endpoint non-JSEP che non supporta l'attributo MID, come discusso nella Sezione 5.10 di seguito). Se il campo MID è presente in un IceCandidate ricevuto, DEVE essere utilizzato per l'identificazione; altrimenti, viene utilizzato l'indice di sezione "m=".
Le implementazioni DEVONO essere preparate a ricevere oggetti con alcuni campi mancanti, come menzionato sopra.