rust turnclient
A release to attach some pre-builts
用於 UDP 的簡單 Rust TURN (RFC 5766) 用戶端 - 甚至可以穿越嚴格的 NAT;目前僅異步
<bonus>
通用 TURN 用戶端/代理,允許使用 TURN 進行自訂操作(您提供用於發送訊號的腳本)。 Github 版本中有一個預先建置的可執行檔。 </bonus>
。
清理後的回顯示例片段:
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 ;
請參閱板條箱級文件以取得更多說明。
未實現/待辦事項/缺點:
Box<dyn std::error::Error>
,僅包含文字字串。Vec<u8>
作為位元組緩衝區。範例:
echo.rs
- 連接到指定的 TURN 伺服器,授權指定的對等點並充當它的回顯伺服器(上面描述的片段)proxy.rs
- 在本地 UDP 對等點和 TURN 介導的對等點之間交換資料包。當分配可用時執行腳本。對於舊 Rust 和 Tokio 0.1
有舊的0.1.0
版本的套件。這可能比當前版本表現更好或更差,我還沒有真正檢查過。