我在 go 中创建一个 grpc 服务,我按如下方式设置我的 grpcfunc 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为我生成这个,但我有点困惑。
1 回答
幕布斯7119047
TA贡献1794条经验 获得超8个赞
您必须从构造函数中获得reflection.Register
,而不是您自己的实现。*grpc.Server
grpc.NewServer()
grpcServer := grpc.NewServer()
gen.RegisterUserServiceServer(grpcServer, &s)
reflection.Register(grpcServer)
- 1 回答
- 0 关注
- 152 浏览
添加回答
举报
0/150
提交
取消