Implémentation de notre propre serveur STUN/TURN pour L'Application WebRTC

Je travaille sur une application webrtc et je dois implémenter le serveur TURN suivant.

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

Je suis ce tutoriel.

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

Et il est dit de référencer le serveur TURN comme suit, dans le code javascript où RTCPeerConnection est créé.

var pc_config = {"iceServers": [{"url": "stun:stun.l.google.com:19302"},
  {"url":"turn:my_username@<turn_server_ip_address>", "credential":"my_password"}]};

pc_new = new webkitRTCPeerConnection(pc_config);

Je suis un peu confus, pourquoi référençons - nous au serveur STUN public de Google. Je pensais que le serveur RFC5766 TURN a étourdi à l'intérieur.

Est-ce que RFC5766 ne tourne que le serveur? et pas STUN serveur? Ne pouvons-nous pas implémenter notre propre serveur STUN plutôt en utilisant un fourni par Google?

Désolé pour cette question naïve. Je suis nouveau sur WebRTC.

Merci.

21
demandé sur Sam Fast 2014-03-06 23:22:02

2 réponses

TURN c'est une extension de STUN, donc TURN server a également des fonctionnalités STUN.

Https://code.google.com/p/rfc5766-turn-server/ fonctionne également comme un ÉTOURDISSEMENT, de sorte que vous pouvez essayer d'écrire quelque chose comme ceci:

var pc_config = {"iceServers": [{"url":"turn:my_username@<turn_server_ip_address>", "credential":"my_password"}]};

pc_new = new webkitRTCPeerConnection(pc_config);
16
répondu Rubycon 2014-03-07 08:44:51

Juste en ajoutant à la réponse D'Igor,

coturn est un fork de rfc5766-turn-server, les principales fonctionnalités sont les mêmes, avec des fonctionnalités supplémentaires et de nouvelles fonctionnalités sont ajoutées, donc je vous conseille de l'utiliser à la place.

Dans les propres mots de l'auteur:

Ce projet a évolué à partir du projet rfc5766-turn-server ( https://code.google.com/p/rfc5766-turn-server/). Il existe de nombreuses nouvelles spécifications de tour avancées qui vont bien au-delà du document original RFC 5766. Ce projet prend le code de rfc5766-turn-server comme démarreur, et y ajoute de nouvelles fonctionnalités avancées.

En ce qui concerne L'Installation, il est facile à installer sur les machines linux, pas essayé dans d'autres systèmes d'exploitation.

Moyen Simple:

sudo apt-get install coturn

Si vous dites Non, Je veux la dernière pointe, vous pouvez télécharger le code source de leur page de téléchargements dans l'installer vous-même, exemple:

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 

Pour exécuter le tour, il est conseillé de l'exécuter en tant que démon, et vous pouvez l'utiliser wiki pour référence pour le configurer.

Exemple de commande pour exécuter TURN server:

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

Description de la commande:

  • - A-utiliser le mécanisme d'identification à long terme
  • - O-exécuter le processus serveur en tant que démon
  • - V-mode verbeux 'modéré'.
  • - N-aucun fichier de configuration
  • -- no-dtls - ne démarre pas les écouteurs DTLS
  • -- no-tls - ne démarre pas les écouteurs TLS
  • - U-informations d'identification de l'utilisateur à utiliser
  • - r - domaine par défaut à utiliser, besoin D'API REST TURN

Maintenant, vous pouvez utiliser le serveur TURN dans votre application WebRTC comme:

var peerConnectionConfig = {
  iceServers: [{
    urls: YOUR_IP:3478,
    username: 'test',
    password: 'test'
  }]
}
26
répondu mido 2017-08-16 07:14:28