我正在創建一個 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 沒有實作反射.GRPCServer(缺少 GetServiceInfo 方法)
但我不知道如何實作它,我已經搜索了幾個小時。感覺可以為我protoc生成這個,但我有點困惑。
uj5u.com熱心網友回復:
您必須reflection.Register從建構式中獲得,而不是您自己的實作*grpc.Server。grpc.NewServer()
grpcServer := grpc.NewServer()
gen.RegisterUserServiceServer(grpcServer, &s)
reflection.Register(grpcServer)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/520335.html
標籤:去反射grpc-go
