UDPeer (you-dee-peer) ist ein einfaches UDP-Peer-2-Peer-Kommunikationsframework, das auf der harten Arbeit von Webrtc-Entwicklern und verschiedenen anderen großartigen Nodejs-Mitwirkenden basiert.
Die Grundidee ist folgende:
Wenn zwei Maschinen über WebRTC über NAT und Firewalls kommunizieren könnten, sollten sie auch in der Lage sein, UDP-Pakete auszutauschen. Darum geht es bei diesem Projekt. UDPeer ist ein einfacher UDP-Proxy, der auf beiden Seiten läuft und einen bidirektionalen UDP-Kanal bereitstellt.
Dieser Proxy funktioniert nur, wenn Ihr Client und Server über webRTC über das öffentliche Internet kommunizieren können. Normalerweise funktioniert es problemlos, solange Sie über ausgehende Internetverbindungen verfügen. Um dies zu überprüfen, können Sie dies jedoch auch auf verschiedenen Websites wie https://simplewebrtc.com/demo.html testen
Wirklich einfach.
npm install -g udpeer
Sie müssen auf Client- und Serverseite separate Instanzen des Udpeer-Proxys ausführen. Sie werden mithilfe von WebRTC einen Kommunikationskanal untereinander aufbauen, der Firewalls durchdringt. webrtc erfordert eine Signalisierung zwischen Knoten, die über Signalhub (https://github.com/mafintosh/signalhub) erfolgt, einen einfachen WebSocket-basierten Server. Idealerweise richten Sie einen eigenen Signalisierungsserver ein und geben dort die URL an.
Sobald die Proxys einen Kommunikationskanal einrichten, stellen sie einen lokalen UDP-Port auf localhost bereit. Die Client- und Serverprogramme kommunizieren mit diesen lokalen Ports, anstatt miteinander zu kommunizieren.
+--------+ +--------+ | | | | +----------+ | | WEBRTC | | +----------+ | Client +----+ Node 1 +----------------------------+ Node 2 +------+ Server | +----------+ | | ^ | +----------+ | | | | | | | | +----+---+ +----+---+ | +-----------+ | | | || | +------------+ SIGNALHUB|-------------+ WebSocket| || Websocket +-----------+
Vereinbaren Sie zwischen zwei Parteien einen eindeutigen gemeinsamen Kanalnamen. Es ist einfach eine große Zeichenfolge. Wenn Sie sich nicht sicher sind, führen Sie UDPeer ohne Kanalnamen aus und es wird automatisch ein Kanalname generiert. Geben Sie dies an andere Parteien weiter. Weisen Sie jedem Computer einen Proxy-UDP-Port zu. Nennen wir es Client-Proxy-Port (CProxy) und Server-Proxy-Port (SProxy).
Das ist es. Installieren Sie UDPeer auf beiden Maschinen.
npm install -g udpeer
Auf Kundenseite
udpeer -i -c channelId -p CProxy:C
Auf der Serverseite
udpeer -c Ourchannel -p SProxy:S
Verwendung
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
Wenn alles gut funktioniert, verbinden sich der Server und der Client-Proxy nach einer Weile über webrtc und Sie sehen eine Meldung auf der Konsole.
##Client-Konfiguration ändern
Sobald der Proxy eingerichtet ist, können Sie die IP-Adressen Ihres Servers in den Client-Einstellungen ändern, um mit lokalen Host-Proxy-Ports statt mit Remote-Adressen zu kommunizieren.
Wenn Ihre Serverkonfiguration im Client beispielsweise 12.131.121.14:3456 war, wird sie zu 0.0.0.0:7890 (wenn Sie im vorherigen Beispiel 7890 als CProxy ausgewählt haben).
*Was passiert, wenn mein Client keinen festen Quellport für die Kommunikation verwendet? Machen Sie sich keine Sorgen, wir haben dafür gesorgt. Sobald der Client eine Verbindung zum Proxy herstellt, speichert der Proxy den Quellport des Clients und antwortet beim nächsten Mal auf denselben.
Hinweis: Der aktuelle Code verschlüsselt die Kommunikation nicht. Bitte nutzen Sie es auf eigene Gefahr. Bitte befolgen Sie alle Richtlinien, die Ihr IT-Personal zur grundlegenden Portsicherheit bereitgestellt hat.
##Absturz aufgrund von WebRTC
Um einige Abstürze im webrtc-Paket in Ubuntu zu vermeiden, sind im Folgenden die Voraussetzungen für Ubuntu/Debian-Pakete aufgeführt. Bitte beachten Sie, dass es sich hierbei um Abhängigkeiten für das WebRTC-Paket von Node.js handelt, nicht direkt um UDPeer. Bitte probieren Sie es aus sudo apt-get install python2.7 git-all pkg-config libncurses5-dev libssl-dev libnss3-dev libexpat-dev
Dieses Paket ist dank der harten Arbeit von möglich
https://github.com/mafintosh/signalhub https://github.com/js-platform/node-webrtc