Simple Rust TURN (RFC 5766) client for UDP - traverse even strict NAT; async only currently

<bonus> A general-purpose TURN client/proxy, allowing to use TURN for custom things (you provide the scripts for signaling). There is a pre-built executable at Github releases.</bonus>.

Cleaned-up echo example snippet:

rust 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;

See crate-level docs for further instructions.

Not implemented / TODO / cons:

Examples:


There is old 0.1.0 version of the crate for old Rust and Tokio 0.1. This may perform better or worse than current version, I haven't really checked yet.