Implementazione del nostro server STUN / TURN per l’applicazione WebRTC

Sto lavorando su un’applicazione webrtc e devo implementare il seguente server TURN.

https://code.google.com/p/rfc5766-turn-server/

Sto seguendo questo tutorial.

http://www.dialogic.com/den/developer_forums/f/71/t/10238.aspx

e dice di fare riferimento al server TURN come segue, in codice javascript dove viene creato RTCPeerConnection.

var pc_config = {"iceServers": [{"url": "stun:stun.l.google.com:19302"}, {"url":"turn:[email protected]", "credential":"my_password"}]}; pc_new = new webkitRTCPeerConnection(pc_config); 

Sono poco confuso, perché stiamo facendo riferimento al server pubblico di STUN di Google. Ho pensato che il server RFC5766 TURN avesse STUN al suo interno.

RFC5766 è il solo server TURN? e non il server STUN? Non possiamo implementare il nostro server STUN piuttosto che usarne uno fornito da Google?

Ci scusiamo per una domanda così ingenua. Sono nuovo di WebRTC.

Grazie.

TURN è un’estensione di STUN, quindi il server TURN ha anche funzionalità STUN.

https://code.google.com/p/rfc5766-turn-server/ funziona anche come STUN, quindi puoi provare a scrivere qualcosa come:

 var pc_config = {"iceServers": [{"url":"turn:[email protected]", "credential":"my_password"}]}; pc_new = new webkitRTCPeerConnection(pc_config); 

Aggiungendo solo la risposta di Igor,

coturn è un fork di rfc5766-turn-server , le funzionalità di base sono le stesse, con funzionalità extra e alle quali vengono aggiunte nuove funzionalità, quindi consiglio di usarlo al suo posto.

nelle parole dell’autore:

Questo progetto si è evoluto dal progetto rfc5766-turn-server ( https://code.google.com/p/rfc5766-turn-server/ ). Ci sono molte nuove specifiche avanzate TURN che vanno ben oltre il documento originale RFC 5766. Questo progetto prende il codice di rfc5766-turn-server come starter e aggiunge nuove funzionalità avanzate.

Per quanto riguarda l’installazione, è facile da installare nelle macchine Linux, non provata in altri sistemi operativi.

modo semplice:

 sudo apt-get install coturn 

Se dici di no, voglio l’ultima frontiera, puoi scaricare il codice sorgente dalla loro pagina di download per installarlo da solo, ad esempio:

 sudo -i # ignore if you already in admin mode apt-get update && apt-get install libssl-dev libevent-dev libhiredis-dev make -y # install the dependencies wget -O turn.tar.gz http://turnserver.open-sys.org/downloads/v4.5.0.6/turnserver-4.5.0.6.tar.gz # Download the source tar tar -zxvf turn.tar.gz # unzip cd turnserver-* ./configure make && make install 

per eseguire il TURN, è consigliabile eseguirlo come demone, e puoi usare questo wiki come riferimento per configurarlo.

comando di esempio per l’esecuzione del server TURN:

 sudo turnserver -a -o -v -n --no-dtls --no-tls -u test:test -r "someRealm" 

descrizione del comando:

  • -a – Utilizza il meccanismo delle credenziali a lungo termine
  • -o – Esegui il processo del server come demone
  • -v – Modalità dettagliata ‘moderata’.
  • -n – nessun file di configurazione
  • –no-dtls – Non avviare i listener DTLS
  • –no-tls – Non avviare listener TLS
  • -u – le credenziali dell’utente da utilizzare
  • -r – realm predefinito da utilizzare, necessario per l’API TURN REST

ora puoi usare il server TURN nella tua applicazione WebRTC come:

 var peerConnectionConfig = { iceServers: [{ urls: YOUR_IP:3478, username: 'test', password: 'test' }] }