UDPeer (you-dee-peer) adalah kerangka komunikasi rekan 2 rekan UDP sederhana, dibangun di atas kerja keras yang dilakukan oleh pengembang webrtc dan berbagai kontributor Nodejs hebat lainnya.
Ide dasarnya adalah sebagai berikut:
Jika dua mesin dapat berbicara melalui WebRTC melalui NAT dan firewall, mereka juga harus dapat bertukar paket UDP. Inilah inti dari proyek ini. UDPeer adalah proksi UDP sederhana yang berjalan di kedua sisi untuk menyediakan saluran UDP dua arah.
Proksi ini hanya akan berfungsi jika klien dan server Anda dapat berkomunikasi melalui webRTC menggunakan internet publik. Biasanya ini berfungsi tanpa masalah selama Anda memiliki koneksi internet keluar, tetapi hanya untuk memverifikasi Anda juga dapat mengujinya di berbagai situs seperti https://simplewebrtc.com/demo.html
Sangat sederhana.
npm install -g udpeer
Anda perlu menjalankan contoh proxy udpeer secara terpisah di sisi klien dan server. Mereka akan membangun saluran komunikasi satu sama lain menggunakan WebRTC yang menembus firewall. webrtc memerlukan pensinyalan antar node, yang dilakukan menggunakan Signalhub (https://github.com/mafintosh/signalhub) server sederhana berbasis websocket. Idealnya Anda harus menyiapkan server sinyal Anda sendiri dan menentukan URL di sana.
Setelah proxy membangun saluran komunikasi, mereka akan mengekspos port lokal UDP di localhost. Program klien dan server akan berkomunikasi dengan port lokal ini alih-alih berbicara satu sama lain.
+--------+ +--------+ | | | | +----------+ | | WEBRTC | | +----------+ | Client +----+ Node 1 +----------------------------+ Node 2 +------+ Server | +----------+ | | ^ | +----------+ | | | | | | | | +----+---+ +----+---+ | +-----------+ | | | || | +------------+ SIGNALHUB|-------------+ WebSocket| || Websocket +-----------+
Setujui nama saluran umum yang unik antara dua pihak. Ini hanyalah sebuah string besar. Jika Anda tidak yakin, jalankan UDPeer tanpa nama saluran dan itu akan menghasilkan nama saluran untuk Anda. Sampaikan ini ke pihak lain. Alokasikan satu port UDP proxy di setiap mesin. Sebut saja Port proxy klien (CProxy) dan Port proxy server (SProxy).
Itu saja. Instal UDPeer di kedua mesin.
npm install -g udpeer
Di sisi klien
udpeer -i -c channelId -p CProxy:C
Di Sisi server
udpeer -c Ourchannel -p SProxy:S
Penggunaan
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
Jika semuanya berfungsi dengan baik, setelah beberapa saat server dan proxy klien akan terhubung melalui webrtc dan Anda akan melihat pesan di konsol.
##Memodifikasi konfigurasi klien
Setelah proxy disiapkan, Anda kemudian dapat mengubah alamat IP server Anda di pengaturan klien untuk berkomunikasi dengan port proxy localhost alih-alih Alamat jarak jauh.
Misal jika konfigurasi server Anda di klien adalah 12.131.121.14:3456 Maka akan menjadi 0.0.0.0:7890 (jika Anda memilih 7890 sebagai CProxy pada contoh sebelumnya)
*Bagaimana jika klien saya tidak menggunakan port sumber tetap untuk komunikasi? Jangan khawatir, kami sudah menyediakannya. Segera setelah klien terhubung ke proksi, proksi akan menyimpan port sumber klien dan membalasnya kembali di waktu berikutnya.
Catatan: Kode saat ini tidak mengenkripsi komunikasi. Silakan gunakan dengan risiko Anda sendiri. Harap ikuti panduan apa pun yang diberikan staf TI Anda mengenai keamanan port dasar.
##Kerusakan Karena WebRTC
Untuk menghindari crash pada paket webrtc di Ubuntu, berikut adalah prasyarat pada paket Ubuntu/debian. Harap dicatat bahwa ini adalah dependensi untuk paket webrtc Node.js, bukan UDPeer secara langsung. Silakan mencobanya sudo apt-get install python2.7 git-all pkg-config libncurses5-dev libssl-dev libnss3-dev libexpat-dev
Paket ini bisa terwujud, berkat kerja keras
https://github.com/mafintosh/signalhub https://github.com/js-platform/node-webrtc