rust turnclient
A release to attach some pre-builts
Simple Rust TURN (RFC 5766) ไคลเอนต์สำหรับ UDP - สำรวจแม้กระทั่ง NAT ที่เข้มงวด async เท่านั้นในปัจจุบัน
<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 ที่ระบุ อนุญาตเพียร์ที่ระบุ และทำหน้าที่เป็นเซิร์ฟเวอร์ echo สำหรับมัน (ตัวอย่างที่แสดงด้านบน)proxy.rs
- แลกเปลี่ยนแพ็กเก็ตระหว่างเพียร์ UDP ท้องถิ่นและเพียร์ที่ใช้สื่อกลาง TURN รันสคริปต์เมื่อมีการจัดสรร มีลังเวอร์ชันเก่า 0.1.0
สำหรับ Rust และ Tokio 0.1
รุ่นเก่า สิ่งนี้อาจทำงานได้ดีกว่าหรือแย่กว่าเวอร์ชันปัจจุบัน ฉันยังไม่ได้ตรวจสอบจริงๆ