rust turnclient
A release to attach some pre-builts
عميل Simple Rust TURN (RFC 5766) لـ UDP - اجتياز حتى NAT الصارم؛ غير متزامن فقط حاليا
<bonus>
عميل/وكيل TURN للأغراض العامة، مما يسمح باستخدام TURN للأشياء المخصصة (أنت تقدم البرامج النصية للإشارة). يوجد ملف قابل للتنفيذ تم إنشاؤه مسبقًا في إصدارات Github. </bonus>
.
مقتطف مثال عن الارتداد الذي تم تنظيفه:
let udp : tokio :: net :: UdpSocket ;
let c = turnclient :: TurnClientBuilder :: new ( turn_server , username , password ) ;
let ( turnsink , turnstream ) = c . build_and_send_request ( udp ) . split ( ) ;
turnstream . map ( move |event| {
Ok ( match event {
MessageFromTurnServer :: AllocationGranted { relay_address , .. } => {
MessageToTurnServer :: AddPermission ( peer_addr , ChannelUsage :: WithChannel )
} ,
MessageFromTurnServer :: RecvFrom ( sa , data ) => {
MessageToTurnServer :: SendTo ( sa , data )
} ,
_ => MessageToTurnServer :: Noop ,
} )
} ) . forward ( turnsink ) . await ;
راجع المستندات على مستوى الصندوق للحصول على مزيد من الإرشادات.
لم يتم تنفيذه / المهام / السلبيات:
Box<dyn std::error::Error>
، مع سلاسل نصية فقط.Vec<u8>
للمخازن المؤقتة للبايت.أمثلة:
echo.rs
- الاتصال بخادم TURN المحدد، وتفويض النظير المحدد والعمل كخادم صدى له (المقتطف الموضح أعلاه)proxy.rs
- تبادل الحزم بين نظير UDP المحلي ونظير TURN. ينفذ البرنامج النصي عندما يصبح التخصيص متاحًا. يوجد إصدار 0.1.0
قديم من الصندوق لـ Rust وTokio 0.1
القديم. قد يكون أداء هذا أفضل أو أسوأ من الإصدار الحالي، ولم أتحقق منه بعد.