rust turnclient
A release to attach some pre-builts
Klien Simple Rust TURN (RFC 5766) untuk UDP - melintasi NAT yang ketat sekalipun; async saja saat ini
<bonus>
Klien/proxy TURN dengan tujuan umum, memungkinkan penggunaan TURN untuk hal-hal khusus (Anda menyediakan skrip untuk pemberian sinyal). Ada executable yang sudah dibuat sebelumnya di rilis Github. </bonus>
.
Cuplikan contoh gema yang telah dibersihkan:
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 ;
Lihat dokumen tingkat peti untuk instruksi lebih lanjut.
Tidak diterapkan / TODO / kontra:
Box<dyn std::error::Error>
, hanya dengan string teks.Vec<u8>
untuk buffer byte.Contoh:
echo.rs
- Hubungkan ke server TURN yang ditentukan, otorisasi rekan yang ditentukan dan bertindak sebagai server gema untuknya (cuplikan digambarkan di atas)proxy.rs
- Pertukaran paket antara rekan UDP lokal dan rekan yang dimediasi TURN. Menjalankan skrip ketika alokasi tersedia. Ada peti versi 0.1.0
lama untuk Rust dan Tokio 0.1
lama. Ini mungkin berkinerja lebih baik atau lebih buruk daripada versi saat ini, saya belum benar-benar memeriksanya.