هذه ممارسة في تجربة البث المتعدد UDP وDHT في مضيف محلي. الفكرة هي تشغيل أي عدد تريده من مثيلات هذا البرنامج الخفي، وستجد جميع المثيلات بعضها البعض عبر البث المتعدد udp وبناء شبكة dht. يقوم كل نظير في الشبكة بإنشاء زوج مفاتيح ed25519، ويرتبط بمنفذ عشوائي. المنفذ عبارة عن خدمة http تتلقى الطلبات عند نقاط النهاية التالية:
تخدم نقطة النهاية /dht طلبات websocket RPC
تخدم نقطة النهاية /api طلبات تجعيد https. استدعاء RPC الوحيد الذي تم تنفيذه الآن هو "ping"
كل ذلك عمل قيد التنفيذ. المزيد من العمل ليتم إضافتها قريبا.
نظرًا لأنه يتم تنفيذ كل مثيل على الشبكة (أو على نفس الكمبيوتر)، يبث المثيل كل 5 ثوانٍ حزمة UDP تحتوي على مفتاح عام تم إنشاؤه حديثًا، ومنفذ خدمة عشوائي، وبالتالي عنوان IP الخاص به من حزمة IP. في كل مرة يتلقى مثيل حزمة UDP متعددة البث، فإنه يتحقق من المفتاح العام للنظير الجديد مقابل الخريطة، وإذا كان نظيرًا تم العثور عليه حديثًا، فسوف يقوم بتسجيله في stdout، وإضافته إلى الخريطة في الذاكرة. تتم طباعة الدلو كل 5 ثواني
git clone
هذا المشروع، أو قم بتحميله من هنا: master.zip./build.sh
للإنشاء في عامل الإرساء، أو استخدم go build
فقط./demo.sh
لتفرخ عشر حالات curl -kvs https://localhost:port/api/ping
^^^ سيخبر هذا النظير بإجراء اختبار اتصال RPC لأقرب ثلاثة أقران في المجموعة.
بعض الأشياء التي يجب ملاحظتها: