3.5.2.1. ICE Candidate Format (ICE-Kandidatenformat)
3.5.2.1. ICE Candidate Format (ICE-Kandidatenformat)
In JSEP werden ICE-Kandidaten durch ein IceCandidate-Objekt abstrahiert, und wie bei Sitzungsbeschreibungen wird die SDP-Syntax für die interne Darstellung verwendet.
Die Kandidatendetails werden in einem IceCandidate-Feld angegeben, wobei dieselbe SDP-Syntax wie das in [RFC8839], Abschnitt 5.1, definierte Feld "candidate-attribute" verwendet wird. Beachten Sie, dass dieses Feld kein "a="-Präfix enthält, wie im folgenden Beispiel angegeben:
candidate:1 1 UDP 1694498815 192.0.2.33 10000 typ host
Das IceCandidate-Objekt enthält ein Feld, das angibt, mit welchem ICE-Benutzernamen-Fragment (ufrag) es verbunden ist, wie in [RFC8839], Abschnitt 5.4, definiert. Dieser Wert wird verwendet, um zu bestimmen, zu welcher Sitzungsbeschreibung (und damit zu welcher Sammlungsphase) dieser IceCandidate gehört, was hilft, Mehrdeutigkeiten während ICE-Neustarts aufzulösen. Wenn dieses Feld in einem empfangenen IceCandidate fehlt (möglicherweise bei der Kommunikation mit einem Nicht-JSEP-Endpunkt), wird die zuletzt empfangene Sitzungsbeschreibung angenommen.
Das IceCandidate-Objekt enthält auch Felder, die angeben, mit welchem "m="-Abschnitt es verbunden ist, der auf eine von zwei Arten identifiziert werden kann: entweder durch einen "m="-Abschnittsindex oder durch eine MID. Der "m="-Abschnittsindex ist ein nullbasierter Index, wobei Index N sich auf den N+1ten "m="-Abschnitt in der von diesem IceCandidate referenzierten Sitzungsbeschreibung bezieht. Die MID ist ein Wert für "media stream identification" (Medienstromidentifikation), wie in [RFC5888], Abschnitt 4, definiert, der eine robustere Möglichkeit bietet, den "m="-Abschnitt in der Sitzungsbeschreibung zu identifizieren, indem die MID des zugehörigen RtpTransceiver-Objekts verwendet wird (die möglicherweise lokal vom Antwortenden generiert wurde, wenn mit einem Nicht-JSEP-Endpunkt interagiert wird, der das MID-Attribut nicht unterstützt, wie in Abschnitt 5.10 unten erläutert). Wenn das MID-Feld in einem empfangenen IceCandidate vorhanden ist, MUSS es zur Identifikation verwendet werden; andernfalls wird der "m="-Abschnittsindex verwendet.
Implementierungen MÜSSEN darauf vorbereitet sein, Objekte mit einigen fehlenden Feldern zu empfangen, wie oben erwähnt.