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 example snippet:

rust let udp : tokio::net::udp::UdpSocket; let c = turnclient::TurnClientBuilder::new(turn_server, username, password); let (turnsink, turnstream) = c.build_and_send_request(udp).split(); turnstream.map(move |event| { match event { MessageFromTurnServer::AllocationGranted{ relay_address, ..} => { MessageToTurnServer::AddPermission(peer_addr, ChannelUsage::WithChannel) }, MessageFromTurnServer::RecvFrom(sa,data) => { MessageToTurnServer::SendTo(sa, data) }, _ => MessageToTurnServer::Noop, } }).forward(turnsink); // run this with Tokio

See crate-level docs for further instructions.

Not implemented / TODO / cons:

Examples: