当前位置: 首页 > 知识库问答 >
问题:

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

岳玉书
2023-03-14

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

我用以下命令启动服务器:

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

共有1个答案

禄星腾
2023-03-14

您可以通过在调用之前调用ClientContext上的set_deadline来设置RPC上的最后期限。

更新-我为误解道歉。GRPC_ARG_KEEPALIVE_TIME_MS正是您想要的。它不能按预期工作的原因可能与你进行读写的方式有关。

 类似资料:
  • 我想从React客户端向服务器发送文件。我知道为此,我应该使用grpc流媒体并将文件分割成块。所以,问题是如何将这些块发送到服务器?

  • 问题内容: 我知道我可以检查是否有鼠标左键 但是如何检查他们是否双击了?还有什么方法可以检查用户是否向前或向后移动了滚轮? 问题答案: 我从未使用过-但是: 检测双击: 猜测一下,而不是立即处理每次单击,而是施加50ms的延迟,然后查看您在该时间是否收到另一个单击事件。用户可能不会注意到50ms的延迟。 区分上/下滚轮: 请参阅此文档页面上的注释。显然,定义了五个按钮-左,中,右,上滚轮和下滚轮。

  • 在 Spark 流式处理中,如何检测空批次? 让我们以有状态流式处理字数为例:https://github.com/apache/spark/blob/master/examples/src/main/java/org/apache/spark/examples/streaming/JavaStatefulNetworkWordCount.java。是否可以仅在将新单词添加到流中时才打印字数RDD

  • 例如,我正在进行web自动化测试,假设我有两个非常基本的场景: 测试a)步骤1:将记录添加到数据库步骤2:检查网站是否正确显示记录 测试b)步骤1:在网站上编辑记录步骤2:检查记录是否正确保存在数据库中 根据记录,假设它是一个带有“值”的简单文本字段 因此,对于第一种情况,我将使用Assert equal: 但是,对于第二种情况,它将是: 所以基本上它们都做相同的事情,但都是相反的,为了在断言不正