web-dev-qa-db-fra.com

WebRTC sur un LAN isolé sans serveur Ice / Stun / Turn

Sur un réseau local isolé, existe-t-il un moyen d'établir une connexion WebRTC simplement avec les adresses IP attribuées par le serveur DHCP?

Je comprends que je peux accomplir cela avec Node.js et Socket.io - mais j'espérais vraiment éviter de configurer ce type de serveur avec mes compétences limitées. Je suis un professeur de sciences qui s'initie à la programmation, alors n'hésitez pas à restez simple. Je vous remercie!

[~ # ~] mise à jour [~ # ~]

Alex, vous avez raison, je peux éviter d'utiliser un serveur STUN si tous les ordinateurs sont sur le même réseau local. Bien que j'ai dû mordre la balle et installer Node.js sur mon ordinateur portable, ce n'était vraiment pas compliqué. J'ai ensuite essayé tout un tas d '"exemples de travail" qui ne fonctionnaient pas pour moi, jusqu'à ce que je trouve celui-ci et ses fichiers GitHub .

Après avoir exécuté le script du serveur dans Node, j'avais une connexion DataChannel entre deux fenêtres de navigateur sur la même machine, mais pas entre des ordinateurs différents. J'ai modifié les fichiers .html pour pointer vers l'adresse IP de mon serveur local au lieu de localhost et je pouvais alors me connecter avec plusieurs ordinateurs. Puis vint le vrai test - pourrais-je l'utiliser sans connexion Internet? J'ai trouvé la ligne spécifiée à l'aide des serveurs STUN de Google et je l'ai modifiée de

var config = {"iceServers":[{"url":"stun:stun.l.google.com:19302"}]};

pour juste

var config = {"iceServers":[]};

Ça a marché. :-)

26
brainBanter

Omettez la liste iceServers:

const pc = new RTCPeerConnection();

Soit omettre la liste iceServers du constructeur RTCPeerConnection, soit en faire la liste vide [].

De RTCPeerConnection documents:

iceServers | optionnel

Un tableau d'objets RTCIceServer , chacun décrivant un serveur qui peut être utilisé par l'agent ICE; il s'agit généralement de serveurs STUN et/ou TURN. Si ce n'est pas spécifié, la tentative de connexion sera effectuée sans serveur STUN ou TURN disponible, ce qui limite la connexion aux homologues locaux.

démo webrtc/samples

Le projet WebRTC a un exemple Trickle ICE que vous pouvez utiliser pour voir comment les changements dans iceServers affectent l'adresse candidate qui est collectée. L'échantillon spécifique que vous souhaitez consulter est.

  1. Exécutez-le avec les valeurs par défaut définies en appuyant sur le bouton Rassembler les candidats au bas de la page. Cela renverra une liste d'adresses qui incluent l'adresse du côté public de votre NAT.

    Default ICE Servers

  2. Maintenant, supprimez tous les serveurs ICE de la liste et appuyez à nouveau sur Rassemblez les candidats , cette fois, vous ne devriez voir que les adresses réseau locales.

    No ICE Servers

Notez que, sur mon réseau, les 2 adresses IPv4 publiques (commençant par 98.) n'apparaissent que lorsque j'utilise les serveurs ICE par défaut. Lorsque j'utilise une liste de serveurs ICE vide, mes adresses IPv4 publiques ne sont plus découvertes. Mes adresses IPv6, en revanche, sont les mêmes dans les deux tests car elles ne sont pas soumises à NAT.

Voici un lien vers le code source qui configure iceServers et PeerConnection .

1
Doug Richardson