#api-calls #events #websocket-client #supporting #protocols #one-bot

obconn

A Rust WebSocket client library for OneBot protocol, supporting API calls and event handling

1 unstable release

new 0.1.0 Mar 10, 2025

#117 in WebSocket

48 downloads per month

MIT license

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