1 unstable release
new 0.1.0 | Mar 10, 2025 |
---|
#117 in WebSocket
48 downloads per month
22KB
267 lines
OBConn
基于Rust的异步WebSocket客户端库,用于OneBot协议通信。
安装
cargo add obconn
使用方法
创建连接
// 使用WebSocket URL和访问令牌(如需要)创建新实例
let ob_conn = OBConn::new("ws://你的服务器:端口", Some("你的访问令牌")).await;
// 连接到服务器
ob_conn.connect().await?;
检查连接状态
// 检查是否已连接
if ob_conn.is_connected().await {
println!("已连接到服务器");
} else {
println!("未连接到服务器");
}
调用API
// 使用serde_json创建请求
let data = serde_json::json!({
"action": "get_login_info",
"params": {}
});
// 调用API并获取响应,返回的也是serde_json::Value
let response = ob_conn.call_api(&data).await?;
println!("API响应: {:?}", response);
监听事件
// 循环监听事件
loop {
match ob_conn.get_event().await {
Ok(event) => {
println!("收到事件: {:?}", event);
// 在此处理事件
},
Err(err) => {
println!("接收事件时出错: {:?}", err);
break;
}
}
}
断开连接
// 主动断开与服务器的连接(非必须)
ob_conn.disconnect().await;
示例
use obconn::OBConn;
#[tokio::main]
async fn main() -> Result<(),Box<dyn std::error::Error>> {
// 创建并连接
let ob_conn = OBConn::new("ws://服务器:端口", Some("访问令牌")).await;
ob_conn.connect().await?;
// 检查连接状态
if ob_conn.is_connected().await {
println!("成功连接到服务器");
}
// 发起API调用,注意,ob_conn是可以随意clone的
let data = serde_json::json!({
"action": "get_version_info",
"params": {}
});
let response = ob_conn.call_api(&data).await?;
println!("版本信息: {:?}", response);
// 监听事件
loop {
let event = ob_conn.get_event().await?;
println!("事件: {:?}", event);
// 处理事件...
}
Ok(())
}
注意事项
没有自动重连,你可以启动一个线程然后每几秒钟判断一下连接是否断开了。
许可证
MIT许可证
Dependencies
~7–15MB
~165K SLoC