gRPC客户端流

时间:2018-10-16 18:30:50

标签: c++ go grpc

用于客户端流传输的正式gRPC文档指出:

  

服务器发送回一个响应,通常但不一定在收到所有客户端请求后发回...

我想做的是在流的中间捕获服务器响应以停止发送更多数据。

在Go中,我可以使用RecvMsg启动一个新的goroutine来侦听来自服务器的消息,但是我找不到在C ++中执行相同操作的方法。看来ClientWriter没有提供这种功能。

一种解决方案是拥有双向流,但是想知道是否还有其他方法可以在C ++中实现这一目标。

1 个答案:

答案 0 :(得分:0)

一旦响应和状态由服务器发送并在客户端(即客户端gRPC堆栈)接收回,随后对Write()的尝试将开始失败。第一个失败的Write()是向客户端发出的信号,它应该停止编写并完成RPC。

因此,这里的两个选项是: 1.等待写入失败,然后调用完成以接收服务器的响应和状态。 2.如果客户端确实要在调用Finish之前从服务器读取响应,请切换到双向流。