我正在使用Grpc的同步C ++ API通过需要无限期保持打开的双向流发送消息。
现在,如果我在服务器和服务器之间拉电缆客户端,该流上的Write
和Read
调用将在返回false
之前阻止双方约15分钟。
如何将Read
和Write
的超时设置为少于15分钟的时间?
我正在启动服务器:
ServerBuilder srvBuilder;
srvBuilder.AddChannelArgument(GRPC_ARG_KEEPALIVE_TIME_MS, 2000);
srvBuilder.AddChannelArgument(GRPC_ARG_KEEPALIVE_TIMEOUT_MS, 1000);
srvBuilder.AddChannelArgument(GRPC_ARG_HTTP2_BDP_PROBE, 1);
srvBuilder.AddChannelArgument(GRPC_ARG_MAX_CONNECTION_IDLE_MS , 1000);
srvBuilder.AddListeningPort("0.0.0.0:50505", grpc::InsecureServerCredentials());
srvBuilder.RegisterService(&testService);
在Ubuntu 16.04 LTS上使用Grpc 1.10.0
答案 0 :(得分:-1)
您可以通过在调用之前调用ClientContext上的set_deadline来设置RPC的截止日期。
更新 - 我为误解而道歉。 GRPC_ARG_KEEPALIVE_TIME_MS正是您想要的。它没有按预期工作的原因可能与您进行读写的方式有关。