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网络编程

Download history 3/week @ 2024-03-16 9/week @ 2024-03-30 2/week @ 2024-04-06 2/week @ 2024-05-25 1/week @ 2024-06-01

70 每月下载量
用于 rpc-core-net

MIT 许可证

81KB
2K SLoC

rpc-core

Build Status Latest version Documentation License

使用方法

在项目目录中运行以下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

有关详细信息,请参阅examplessrc/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