猿问

grpc服务没有实现reflection.GRPCServer

我在 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为我生成这个,但我有点困惑。


富国沪深
浏览 153回答 1
1回答

幕布斯7119047

您必须从构造函数中获得reflection.Register,而不是您自己的实现。*grpc.Servergrpc.NewServer()grpcServer := grpc.NewServer()    gen.RegisterUserServiceServer(grpcServer, &s)    reflection.Register(grpcServer)
随时随地看视频慕课网APP

相关分类

Go
我要回答