13 个版本
0.6.0 | 2023年6月28日 |
---|---|
0.5.6 | 2022年12月7日 |
0.5.5 | 2022年10月27日 |
0.5.3 | 2022年8月15日 |
0.3.4 | 2022年7月26日 |
#606 在 异步
每月47 次下载
30KB
560 行
库莫科
基于 tokio 构建的简单异步服务器/客户端 crate,便于双向流传输。
不稳定警告!
- 早期开发阶段
- 文档不完整
- 测试有限
动机
在 Rust 服务器和客户端之间启用半复杂数据结构的异步全双工流。gRPC 实现对这并不理想
- 不必要的复杂性
- 讨厌的协议缓冲区
- 数据限制,例如没有枚举
特性
- 许多客户端可以异步与服务器通信
- 每个客户端都有一个全双工连接
- 任何实现了
Message
的数据结构都可以传输
trait Message: Send + Encode + Decode + 'static
示例
在您的 Cargo.toml 中
[dependencies]
kumoko = "0.5"
tokio = { version = "1.20", features = ["macros", "rt-multi-thread"] }
最小客户端
use kumoko::client::Client;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut client = Client::connect("[::1]:50052").await?;
client.emit_request("Ferris".to_string()).await;
let msg: String = client.get_response().await.unwrap();
println!("{}", msg);
Ok(())
}
最小服务器
use kumoko::server::Server;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut server = Server::<String, String>::bind("[::1]:50052").await?;
loop{
let (req, origin) = server.get_request().await;
let msg = format!("Hello {}! Happy to see you here!", req);
server.emit_response(msg, origin.into()).await;
}
}
依赖项
~3–15MB
~135K SLoC