c++ - gRPC 客户端流

标签 c++ go grpc

客户端流的官方 gRPC 文档指出:

The server sends back a single response, typically but not necessarily after it has received all the client’s requests...

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

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

一个解决方案是拥有一个双向流,但想知道是否有任何其他方法可以在 C++ 中实现这一点。

最佳答案

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

所以这里的两个选项是: 1.等待Write失败,然后调用finish接收Server的响应和状态。 2. 如果客户端真的想在调用 Finish 之前从服务器读取响应,请切换到双向流。

关于c++ - gRPC 客户端流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52841895/

相关文章:

swift - DispatchQueue.main.async 外的变量为空

go - 在 Golang 中强制错误处理 - 或不允许忽略返回值

go - 在 Go 中生成构建时间戳

python - 将 Python Thrift 客户端与 Go gRPC 服务器接口(interface)

C++ - ifstream 不喜欢相对路径

go - 下载的 excelize xlsx 文件已损坏

performance - gRPC 服务器在以太网上的响应时间长

c++ - 单/ double SpMV 在 CPU 上的性能

c++ - 我不明白关于指针的这一课

c++ - 一个类型是否可能根据它是否在 constexpr 上下文中定义而具有不同的定义?