3.5.2.1. ICE Candidate Format (Format de candidat ICE)
3.5.2.1. ICE Candidate Format (Format de candidat ICE)
Dans JSEP, les candidats ICE sont abstraits par un objet IceCandidate, et comme pour les descriptions de session, la syntaxe SDP est utilisée pour la représentation interne.
Les détails du candidat sont spécifiés dans un champ IceCandidate, en utilisant la même syntaxe SDP que le champ "candidate-attribute" défini dans [RFC8839], Section 5.1. Notez que ce champ ne contient pas de préfixe "a=", comme indiqué dans l'exemple suivant:
candidate:1 1 UDP 1694498815 192.0.2.33 10000 typ host
L'objet IceCandidate contient un champ pour indiquer à quel fragment de nom d'utilisateur ICE (ufrag) il est associé, comme défini dans [RFC8839], Section 5.4. Cette valeur est utilisée pour déterminer à quelle description de session (et donc à quelle phase de collecte) appartient cet IceCandidate, ce qui aide à résoudre les ambiguïtés lors des redémarrages ICE. Si ce champ est absent dans un IceCandidate reçu (peut-être lors de la communication avec un point de terminaison non-JSEP), la description de session la plus récemment reçue est supposée.
L'objet IceCandidate contient également des champs pour indiquer à quelle section "m=" il est associé, qui peut être identifiée de deux manières: soit par un index de section "m=", soit par un MID. L'index de section "m=" est un index basé sur zéro, l'index N faisant référence à la N+1ème section "m=" dans la description de session référencée par cet IceCandidate. Le MID est une valeur "media stream identification" (identification de flux média), telle que définie dans [RFC5888], Section 4, qui fournit un moyen plus robuste d'identifier la section "m=" dans la description de session, en utilisant le MID de l'objet RtpTransceiver associé (qui peut avoir été généré localement par le répondeur lors de l'interaction avec un point de terminaison non-JSEP qui ne prend pas en charge l'attribut MID, comme discuté dans la Section 5.10 ci-dessous). Si le champ MID est présent dans un IceCandidate reçu, il DOIT être utilisé pour l'identification; sinon, l'index de section "m=" est utilisé à la place.
Les implémentations DOIVENT être préparées à recevoir des objets avec certains champs manquants, comme mentionné ci-dessus.