我有一个C ++ gRPC客户端和Golang gRPC服务器。 对于双向流,当客户端要关闭流时,它将在对Finish()的调用中永远阻塞。

仅在没有错误的情况下才会发生这种情况,即服务器rpc函数返回nil。 如果服务器是用C ++编写的,我知道它将返回Status::Ok

如果Golang服务器返回非nil错误,则Finish()函数将按预期返回。 仅在没有错误的情况下才会出现此问题。

例:

.proto

.cpp

我已经使用Golang gRPC客户端测试了服务器,并且工作正常。 服务器是否应该返回nil错误以外的其他内容? 我应该将此报告为错误吗?

任何帮助表示赞赏! 谢谢!

我不熟悉Go,但是我知道c ++层。 您可以使用GRPC_VERBOSITY = debug和GRPC_TRACE = api运行客户端吗? 这样可以提供对该问题的更多见解。