如何在 Grpc 中使用双向流时检测(物理)断开连接



我正在使用Grpc的同步C++API通过需要无限期保持打开的双向流发送消息。

现在,如果我在服务器和客户端之间拉电缆,该流上的WriteRead呼叫将在两侧阻塞约15分钟,然后返回false

如何将ReadWrite的超时设置为小于 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

可以通过在调用之前在客户端上下文上调用set_deadline来设置 RPC 的截止时间。

更新 - 对于误会,我深表歉意。GRPC_ARG_KEEPALIVE_TIME_MS正是您想要的。它没有按预期工作的原因可能与您进行读取和写入的方式有关。

相关内容

  • 没有找到相关文章

最新更新