当我阅读有关grpc-go的源代码时,例如grpc helloworld示例中的rsp, err := c.SayHello(context.Background(), &pb.HelloRequest{Name: name})
。我知道它使用protobuf消息发送请求和接收响应,并且它还使用status.proto
文件中定义的protobuf发送错误消息。但是我不明白上下文如何在客户端和服务器之间传输。我猜它也使用pb消息,但是我找不到它的定义位置。还是通过http2标头帧进行传输?
答案 0 :(得分:0)
不清楚上下文传输是什么意思,因为context.Context
只是一个Go对象,没有用于序列化/反序列化的方法。也许您在谈论GRPC metadata。据我所知,它们使用HTTP标头作为传输方式。
答案 1 :(得分:0)
决明子,
客户端作为第一个参数传递的上下文与服务器接收的上下文不同。
它们都是本地上下文处理程序。他们帮助您的本地代码检查请求是否仍在运行。因此,您可能会由于某种原因而中断请求,从而中断进程。