rust turnclient
A release to attach some pre-builts
Einfacher Rust TURN (RFC 5766)-Client für UDP – sogar striktes NAT durchqueren; Derzeit nur asynchron
<bonus>
Ein universeller TURN-Client/Proxy, der die Verwendung von TURN für benutzerdefinierte Dinge ermöglicht (Sie stellen die Skripte für die Signalisierung bereit). Bei Github-Releases gibt es eine vorgefertigte ausführbare Datei. </bonus>
.
Bereinigtes Echo-Beispiel-Snippet:
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 ;
Weitere Anweisungen finden Sie in den Dokumenten auf Kistenebene.
Nicht implementiert / TODO / Nachteile:
Box<dyn std::error::Error>
mit nur einer Textzeichenfolge.Vec<u8>
für Bytepuffer.Beispiele:
echo.rs
– Stellen Sie eine Verbindung zum angegebenen TURN-Server her, autorisieren Sie den angegebenen Peer und fungieren Sie als Echo-Server dafür (Ausschnitt oben abgebildet).proxy.rs
– Tauschen Sie Pakete zwischen einem lokalen UDP-Peer und einem TURN-vermittelten Peer aus. Führt ein Skript aus, wenn die Zuweisung verfügbar wird. Es gibt die alte Version 0.1.0
der Kiste für das alte Rust und Tokio 0.1
. Dies kann eine bessere oder schlechtere Leistung als die aktuelle Version haben, ich habe es noch nicht wirklich überprüft.