登录
首页 >  Golang >  Go问答

服务端未启用 GRPC 反射

来源:stackoverflow

时间:2024-02-19 10:33:24 137浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《服务端未启用 GRPC 反射》,文章讲解的知识点主要包括,如果你对Golang方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

我正在 go 中创建 grpc 服务,我按如下方式设置 grpc

func setupgrpc() {
    lis, err := net.listen("tcp", ":9000")
    if err != nil {
        log.fatalf("failed to listen: %v", err)
    }

    s := followerservice.userserver{}

    grpcserver := grpc.newserver()
    gen.registeruserserviceserver(grpcserver, &s)

    // for ease of cli dev
    reflection.register(s) // this doesn't work!

    if err := grpcserver.serve(lis); err != nil {
        log.fatalf("failed to serve: %s", err)
    }
}

我的 userserver 看起来像这样

type UserServer struct {
    gen.UnimplementedUserServiceServer
}

func (s *UserServer) Create(ctx context.Context, in *gen.CreateUserRequest)(*gen.CreateUserResponse, error) {
    log.Printf("Receive message body from client: %s", in.Email)
    return &gen.CreateUserResponse{Id: "new id!"}, nil
}

func setupgrpc() 中标记的行处,我收到编译时错误:

followerservice.userserver没有实现reflection.grpcserver(缺少getserviceinfo方法)

但我不知道如何实现它,我已经在谷歌上搜索了几个小时了。 感觉就像 protoc 可以为我生成这个,但我有点困惑。


正确答案


您必须 reflection.Registergrpc.newserver() 构造函数获得的 *grpc.server,而不是您自己的实现。

grpcServer := grpc.NewServer()
    gen.RegisterUserServiceServer(grpcServer, &s)

    reflection.Register(grpcServer)

终于介绍完啦!小伙伴们,这篇关于《服务端未启用 GRPC 反射》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>