7个版本
0.3.2 | 2024年1月4日 |
---|---|
0.3.1 | 2024年1月4日 |
0.2.2 | 2023年12月16日 |
0.1.0 | 2023年11月28日 |
1066 在 网络编程
70 每月下载量
用于 rpc-core-net
81KB
2K SLoC
rpc-core
使用方法
在项目目录中运行以下Cargo命令
cargo add rpc-core
或将以下行添加到您的Cargo.toml文件中
[dependencies]
rpc-core = { version = "0.3.2", features = ["net"] }
示例
有关详细信息,请参阅src/tests
-
接收者
fn subscribe() { rpc_s.subscribe("cmd", |msg: String| -> String { assert_eq!(msg, "hello"); "world".to_string() }); }
-
发送者(回调)
fn call() { rpc_c.cmd("cmd") .msg("hello") .rsp(|msg: String| { assert_eq!(msg, "world"); }) .call(); }
-
发送者(未来)
async fn call() { let result = rpc_c.cmd("cmd").msg("hello").future::<String>().await; assert_eq!(result.result.unwrap(), "world"); }
特性
net
有关详细信息,请参阅examples
:src/examples
-
服务器
fn server() { let rpc = Rpc::new(None); rpc.subscribe("cmd", |msg: String| -> String { assert_eq!(msg, "hello"); "world".to_string() }); let server = rpc_server::RpcServer::new(6666, RpcConfigBuilder::new().rpc(Some(rpc.clone())).build()); server.start(); }
-
客户端
async fn client() { let rpc = Rpc::new(None); let client = rpc_client::RpcClient::new(RpcConfigBuilder::new().rpc(Some(rpc.clone())).build()); client.set_reconnect(1000); client.open("localhost", 6666); let result = rpc.cmd("cmd").msg("hello").future::<String>().await; assert_eq!(result.result.unwrap(), "world"); }
许可证
本项目采用MIT许可证。
依赖项
~0.5–9.5MB
~84K SLoC