gRPC WaitForConnected始终返回true

时间:2018-09-14 00:46:30

标签: c++ grpc

我有作为2个独立服务运行的grpc服务器和grpc客户端解决方案。如果客户端首先启动,它将尝试连接到grpc服务器,如果服务器未启动,则它会等待。我认为WaitForConnected是为此目的而定义的。看来它无法正常工作。

我的代码:

    if (!channel->WaitForConnected(gpr_time_add(
              gpr_now(GPR_CLOCK_REALTIME),
              gpr_time_from_seconds(600, GPR_TIMESPAN)))) {
        //Log error and return
      }
     grpc_connectivity_state state = channel->GetState(true);
     // cout << state always return 2 (GRPC_CHANNEL_READY) even if server is not up.  

Grpc版本:1.6.x

1 个答案:

答案 0 :(得分:0)

您是否正在docker容器中运行?请注意,docker-proxy接受连接,即使容器内的端口尚未打开其端口。

您可以通过创建虚拟端口映射(例如:docker run --rm -it -p 1234:1234 $my-image)来进行测试。即使映像没有打开端口,docker-proxy也会打开它并接受与它建立的连接。您可以使用--net=host选项作为解决方法。它不使用代理。