ICE (Interactive Connectivity Establishment) è il protocollo utilizzato per connettere 2 peer; determina tutti i percorsi possibili tra i 2 peer e garantisce che siano connessi. Questi percorsi sono noti anche come Candidate Pairs, ovvero una coppia di indirizzi di trasporto locali e remoti. Questi indirizzi possono essere l'indirizzo IP locale, l'indirizzo IP pubblico o l'indirizzo di trasporto inoltrato. Ogni peer raccoglie tutti gli indirizzi che desidera utilizzare, li scambia, quindi tenta di connettersi.
I seguenti eventi possono essere chiamati durante la raccolta degli indirizzi
OnRTCLocalCandidate
L'evento viene chiamato quando viene trovato un nuovo candidato locale.
OnRTCRemoteCandidate
L'evento viene chiamato quando il server WebSocket invia un candidato remoto a questo peer.
OnRTCLocalDescription
L'evento viene chiamato quando il TsgcRTCPeerConnection richiede l'SDP locale
OnRTCRemoteDescription
L'evento viene chiamato quando il server WebSocket invia l'SDP remoto a questo peer.
Quando il peer invia richieste di binding all'altro peer per verificare se può connettersi, possono essere chiamati i seguenti eventi
OnRTCCandidatePairNominated
Quando entrambi i peer possono connettersi utilizzando questa coppia di candidati, l'evento viene chiamato.
OnRTCCandidatePairFailed
Quando i peer non riescono a connettersi utilizzando questa coppia di candidati, viene chiamato questo evento.
OnRTCConnect
Questo evento viene chiamato quando esiste una coppia di candidati valida e DTLS non è abilitato.
Se DTLS è abilitato, questo evento viene chiamato dopo un handshake DTLS avvenuto con successo.