grpc-go上下文如何在客户端和服务器之间传输?

时间:2019-06-23 11:44:51

标签: grpc grpc-go

当我阅读有关grpc-go的源代码时,例如grpc helloworld示例中的rsp, err := c.SayHello(context.Background(), &pb.HelloRequest{Name: name})。我知道它使用protobuf消息发送请求和接收响应,并且它还使用status.proto文件中定义的protobuf发送错误消息。但是我不明白上下文如何在客户端和服务器之间传输。我猜它也使用pb消息,但是我找不到它的定义位置。还是通过http2标头帧进行传输?

2 个答案:

答案 0 :(得分:0)

不清楚上下文传输是什么意思,因为context.Context只是一个Go对象,没有用于序列化/反序列化的方法。也许您在谈论GRPC metadata。据我所知,它们使用HTTP标头作为传输方式。

答案 1 :(得分:0)

决明子,

客户端作为第一个参数传递的上下文与服务器接收的上下文不同。

它们都是本地上下文处理程序。他们帮助您的本地代码检查请求是否仍在运行。因此,您可能会由于某种原因而中断请求,从而中断进程。