HTTP/2客户端能否通过在双向流RPC中发送头帧来终止流?

HTTP/2客户端能否通过在双向流RPC中发送头帧来终止流?,http,grpc,http2,Http,Grpc,Http2,假设我们有一个双向流式RPC,其中客户端发送多个请求消息(即多个数据帧),服务器使用多个响应消息(即多个数据帧)进行应答 据我所知,当RPC完成时,服务器通常会发送一个带有状态标头的标头帧,以及一些可能的尾部标头,如grpc status和grpc message,以标记请求/响应交换的完成 我的问题是,假设服务器发送错误的响应消息,客户端是否可以发送带有grpc状态和grpc消息头的头帧来传递有关错误的信息 我之所以要问的原因是因为在C++服务器代码中(从原始BuffFIN定义生成),我正在努

假设我们有一个双向流式RPC,其中客户端发送多个请求消息(即多个数据帧),服务器使用多个响应消息(即多个数据帧)进行应答

据我所知,当RPC完成时,服务器通常会发送一个带有状态标头的标头帧,以及一些可能的尾部标头,如grpc status和grpc message,以标记请求/响应交换的完成

我的问题是,假设服务器发送错误的响应消息,客户端是否可以发送带有grpc状态和grpc消息头的头帧来传递有关错误的信息

我之所以要问的原因是因为在C++服务器代码中(从原始BuffFIN定义生成),我正在努力寻找一种方法来获取客户端发送的最后一个头帧,以验证GRPC状态和GRPC消息头的值。 此外,在经历了grpc项目中的单元测试之后,似乎只有服务器返回RPC的状态,这进一步引起了怀疑

然而,我能够从客户端发送头帧,但是基于上述情况,我不确定这是否是正确的行为,即使我能够做到这一点

如果有人能为我澄清这一点,我将不胜感激,因为我对HTTP/2和gRPC相当陌生

此外,在经历了grpc项目中的单元测试之后,似乎只有服务器返回RPC的状态,这进一步引起了怀疑

对!在gRPC中,服务器负责使用状态和可选的尾随元数据终止RPC。客户端从不向服务器发送状态。客户端可以指示它在没有状态的流上完成发送(这在内部是通过发送设置了END_stream标志的空数据帧来实现的,但是用户不需要关心这个细节)。客户端仅在RPC开始时发送头帧