UDPeer (you-dee-peer) est un simple cadre de communication UDP peer 2 peer, construit sur le travail acharné effectué par les développeurs webrtc et divers autres formidables contributeurs Nodejs.
L'idée de base est la suivante :
Si deux machines pouvaient communiquer via WebRTC via NAT et pare-feu, elles devraient également pouvoir échanger des paquets UDP. C’est tout l’enjeu de ce projet. UDPeer est un simple proxy UDP fonctionnant des deux côtés pour fournir un canal UDP bidirectionnel.
Ce proxy ne fonctionnera que si votre client et votre serveur peuvent communiquer via webRTC en utilisant l'Internet public. Habituellement, cela fonctionne sans aucun problème tant que vous disposez de connexions Internet sortantes, mais juste pour vérifier, vous pouvez également le tester sur divers sites tels que https://simplewebrtc.com/demo.html
Vraiment simple.
npm install -g udpeer
Vous devrez exécuter des instances distinctes du proxy udpeer côté client et côté serveur. Ils établiront un canal de communication entre eux en utilisant WebRTC qui traverse les pare-feu. webrtc nécessite une signalisation entre les nœuds, qui est effectuée à l'aide de Signalhub (https://github.com/mafintosh/signalhub), un simple serveur basé sur websocket. Idéalement, vous devriez configurer votre propre serveur de signalisation et y spécifier l'URL.
Une fois que les proxys auront établi un canal de communication, ils exposeront un port local UDP sur localhost. Le client et les programmes du serveur communiqueront avec ces ports locaux au lieu de se parler.
+--------+ +--------+ | | | | +----------+ | | WEBRTC | | +----------+ | Client +----+ Node 1 +----------------------------+ Node 2 +------+ Server | +----------+ | | ^ | +----------+ | | | | | | | | +----+---+ +----+---+ | +-----------+ | | | || | +------------+ SIGNALHUB|-------------+ WebSocket| || Websocket +-----------+
Convenez d’un nom de canal commun unique entre deux parties. C'est simplement une grosse chaîne. Si vous n'êtes pas sûr, exécutez UDPeer sans nom de canal et il en générera un pour vous. Transmettez-le à une autre partie. Allouez un port UDP proxy sur chacune des machines. Appelons-le port proxy client (CProxy) et port proxy serveur (SProxy).
C'est ça. Installez UDPeer sur les deux machines.
npm install -g udpeer
Côté client
udpeer -i -c channelId -p CProxy:C
Côté serveur
udpeer -c Ourchannel -p SProxy:S
Usage
Usage:
udpeer [-i] [--channel=channelID] --ports=proxy:client
-i --init = should be true only for initiator of the connection (only one of the two parties)
-m --my = A unique node name for your machine, if you want to override
-c --channel = The channel where two nodes will communicate. Must be unique
If you don't specify, it will be generated, which needs to be shared with your peer.
-s --signal = Your own private signaling URLs, seperated by comma. e.g. https://url.com,https://url2.com
-p --ports = The local ports in the form proxy:local
-l --localhost = Localhost IP (127.0.0.1 by default)
-v --version = Version
-h --help = print this message
Example. Machine 1
udpeer -cFQBLA7?H8N5ZHP65 -p 5000:5001
At Machine 2 (As initiator)
udpeer -i -cFQBLA7?H8N5ZHP65 -p 6000:6001
Si tout fonctionne bien, après un certain temps, le serveur et le proxy client se connecteront via webrtc et vous verrez un message sur la console.
##Modification de la configuration du client
Une fois le proxy configuré, vous pouvez ensuite modifier les adresses IP de votre serveur dans les paramètres client pour communiquer avec les ports proxy localhost au lieu des adresses distantes.
Par exemple, si la configuration de votre serveur dans le client était 12.131.121.14:3456, elle deviendra alors 0.0.0.0:7890 (si vous avez choisi 7890 comme CProxy dans l'exemple précédent)
*Que se passe-t-il si mon client n'utilise pas de port source fixe pour la communication ? Ne vous inquiétez pas, nous nous en occupons. Dès que le client se connecte au proxy, le proxy enregistrera le port source du client et y répondra la prochaine fois.
Remarque : Le code actuel ne crypte pas la communication. Veuillez utiliser à vos propres risques. Veuillez suivre toutes les directives fournies par votre personnel informatique concernant la sécurité de base des ports.
##Crash dû à WebRTC
Afin d'éviter certains plantages du package webrtc dans Ubuntu, voici les prérequis sur les packages Ubuntu/debian. Veuillez noter qu'il s'agit de dépendances pour le package webrtc Node.js, et non directement d'UDPeer. Veuillez essayer sudo apt-get install python2.7 git-all pkg-config libncurses5-dev libssl-dev libnss3-dev libexpat-dev
Ce package est possible grâce au travail acharné de
https://github.com/mafintosh/signalhub https://github.com/js-platform/node-webrtc