我可以连接到Tarpc RPC服务而不使用服务器上的地址吗?

时间:2017-09-14 08:10:07

标签: rust rpc

我正在使用Tarpc

客户端

let (_, mut auth_reactor) = auth::spawn_server(auth_server_address);
let auth_client: auth::FutureClient = auth_reactor
    .run(auth::FutureClient::connect(
        auth_server_address,
        client::Options::default(),
    ))
    .unwrap();

auth_reactor
    .run(
        auth_client
            .authme(byte_vector_auth.clone())
            .map_err(|e| println!("{}", e))
            .and_then(|i| {
                println!("{:?}", i);
                Ok(())
            }),
    )
    .unwrap();

服务器

pub fn spawn_server(address: SocketAddr) -> (server::Handle, reactor::Core) {
    let reactor = reactor::Core::new().unwrap();
    client::Options::default().handle(reactor.handle());
    let (auth_handler, server) = AuthServer
        .listen(address, &reactor.handle(), server::Options::default())
        .unwrap();
    reactor.handle().spawn(server);
    return (auth_handler, reactor);
}

我正在返回反应堆,因为我需要它给客户。

1 个答案:

答案 0 :(得分:1)

使用tokio,您需要一个反应器来运行您的异步客户端。 我不认为您需要使用与服务器相同的反应器,但每个线程只能有一个反应器。

因此,您可以生成客户端线程,甚至为您的客户端构建不同的二进制文件。

您必须以另一种方式获取服务器地址,但这不应该太难;)