rust turnclient
A release to attach some pre-builts
Cliente Simple Rust TURN (RFC 5766) para UDP: atraviesa incluso NAT estricta; asíncrono sólo actualmente
<bonus> Un cliente/proxy TURN de propósito general, que permite usar TURN para cosas personalizadas (usted proporciona los scripts para la señalización). Hay un ejecutable prediseñado en las versiones de Github. </bonus> .
Fragmento de ejemplo de eco limpio:
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 ;Consulte los documentos a nivel de caja para obtener más instrucciones.
No implementado / TODO / contras:
Box<dyn std::error::Error> , con solo cadenas de texto.Vec<u8> para buffers de bytes.Ejemplos:
echo.rs : conéctese al servidor TURN especificado, autorice al par especificado y actúe como un servidor de eco para él (el fragmento se muestra arriba)proxy.rs : intercambia paquetes entre un par UDP local y un par mediado por TURN. Ejecuta un script cuando la asignación está disponible. Existe una versión antigua 0.1.0 de la caja para Rust y Tokio 0.1 antiguos. Esto puede funcionar mejor o peor que la versión actual, realmente no lo he comprobado todavía.