تسمح libjuice ( JUICE هي مكتبة مؤسسة اتصال تفاعلي UDP ) بفتح تدفقات بروتوكول مخطط بيانات المستخدم ثنائي الاتجاه (UDP) مع اجتياز مترجم عنوان الشبكة (NAT).
المكتبة عبارة عن تطبيق مبسط لبروتوكول إنشاء الاتصال التفاعلي (ICE)، من جانب العميل والخادم، مكتوب بلغة C دون تبعيات لمنصات POSIX (بما في ذلك GNU/Linux وAndroid وApple macOS وiOS) وMicrosoft Windows. يدعم العميل مكونًا واحدًا فقط عبر UDP لكل جلسة في هيكل الشبكة القياسية ذات البوابة الواحدة، حيث يجب أن يكون هذا كافيًا لغالبية حالات الاستخدام في الوقت الحاضر.
libjuice مرخص بموجب MPL 2.0، راجع الترخيص.
libjuice متاح على AUR وvcpkg. الارتباطات متاحة لـ Rust.
للحصول على تطبيق خادم STUN/TURN المبني على libjuice، راجع Violet.
تطبق المكتبة وكيل ICE كامل ومبسط (RFC5245 ثم RFC8445) ويتميز بما يلي:
بروتوكول STUN (RFC5389 ثم RFC8489)
ترحيل الدوران (RFC5766 ثم RFC8656)
نضارة موافقة ICE (RFC7675)
ICE في انتظار الاتصال بفارغ الصبر (RFC 8863)
واجهة قائمة على SDP (RFC8839)
دعم IPv4 وIPv6 المزدوج
تعدد إرسال اختياري على منفذ UDP واحد
القيود بالمقارنة مع وكيل ICE كامل المواصفات هي:
يتم دعم UDP فقط كبروتوكول نقل ويتم تجاهل البروتوكولات الأخرى.
يتم دعم مكون واحد فقط، وهو ما يكفي لقنوات بيانات WebRTC وRTP+RTCP المتعددة.
يتم جمع المرشحين دون الارتباط بكل واجهة شبكة، والتي تتصرف بشكل مماثل للتنفيذ الكامل على معظم أنظمة العملاء.
كما أنها تنفذ خادم STUN/TURN خفيف الوزن (RFC8489 وRFC8656). يمكن تعطيل الخادم في وقت الترجمة باستخدام علامة NO_SERVER
.
لا أحد!
اختياريًا، يمكن لـ Nettle توفير خوارزميات SHA1 وSHA256 بدلاً من التنفيذ الداخلي.
استنساخ $ git https://github.com/paullouisageneau/libjuice.git $ سي دي ليبجويس
تستهدف مكتبة CMake libjuice
و libjuice-static
على التوالي مع المكتبات المشتركة والثابتة. سيقوم الهدف الافتراضي ببناء المكتبة والاختبارات. يقوم بتصدير الأهداف باستخدام مساحة الاسم LibJuice::LibJuice
و LibJuice::LibJuiceStatic
لربط المكتبة من مشروع CMake آخر.
بناء $ cmake -B بناء القرص المضغوط $ $ الصنع -j2
يسمح الخيار USE_NETTLE
باستخدام مكتبة Nettle بدلاً من التنفيذ الداخلي لـ HMAC-SHA1:
$ cmake -B build -DUSE_NETTLE=1 بناء القرص المضغوط $ $ الصنع -j2
$ cmake -B build -DCMAKE_TOOLCHAIN_FILE=/usr/share/mingw/toolchain-x86_64-w64-mingw32.cmake # استبدل بملف سلسلة الأدوات الخاص بك $ cd build $ الصنع -j2
$ cmake -B build -G "NMake Makefiles"$ cd build $ نماك
$ جعل
يسمح الخيار USE_NETTLE
باستخدام مكتبة Nettle بدلاً من التنفيذ الداخلي لـ HMAC-SHA1:
$ جعل USE_NETTLE=1
راجع test/connectivity.c للحصول على مثال كامل للاتصال المحلي.
راجع test/server.c للحصول على مثال للخادم.