猿问

grpc中能否传输context的内容?

我已经定义了一个客户端和服务器。它们都有一个ctx(context)作为参数,client和server通过grpc进行通信。


type Client interface {

    GetFileVersion(ctx context.Context, in *Req) (*Resp, error)

}


type client struct {

    cc *grpc.ClientConn

}


func (c *client) GetFileVersion(ctx context.Context, in *Req) (*Resp, error) {

    out := new(Resp)

    err := grpc.Invoke(ctx, "/testpb/GetFileVersion", in, out, c.cc, opts...)

    if err != nil {

        return nil, err

    }

    return out, nil

}




type Server interface {

    GetFileVersion(context.Context, *Req) (*Resp, error)

}

如果我在客户端实现GetFileVersion时在ctx中设置值,我可以在服务器端获取到这个值吗?


ctx = context.WithValue(parent, "test", 123)


海绵宝宝撒
浏览 136回答 1
1回答

摇曳的蔷薇

context是全局请求变量的通用注册表。它不应该逃脱请求范围。考虑换一种方式。
随时随地看视频慕课网APP

相关分类

Go
我要回答