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
版本的包。这可能比当前版本表现更好或更差,我还没有真正检查过。