我有作为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
答案 0 :(得分:0)
您是否正在docker容器中运行?请注意,docker-proxy
接受连接,即使容器内的端口尚未打开其端口。
您可以通过创建虚拟端口映射(例如:docker run --rm -it -p 1234:1234 $my-image
)来进行测试。即使映像没有打开端口,docker-proxy
也会打开它并接受与它建立的连接。您可以使用--net=host
选项作为解决方法。它不使用代理。