Run the following Cargo command in your project directory:
cargo add rpc-core
Or add the following line to your Cargo.toml:
[dependencies]
rpc-core = { version = "0.3.2", features = ["net"] }
See src/tests for details:
-
receiver
fn subscribe() { rpc_s.subscribe("cmd", |msg: String| -> String { assert_eq!(msg, "hello"); "world".to_string() }); }
-
sender (callback)
fn call() { rpc_c.cmd("cmd") .msg("hello") .rsp(|msg: String| { assert_eq!(msg, "world"); }) .call(); }
-
sender (future)
async fn call() { let result = rpc_c.cmd("cmd").msg("hello").future::<String>().await; assert_eq!(result.result.unwrap(), "world"); }
See examples
for details: src/examples
-
server
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(); }
-
client
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"); }
This project is licensed under the MIT license.