2017-02-04 12 views
0

私はgo lang grpcサーバを構築するために、このexampleと協力しています。golang + grpc:GrpcServerのサービスを登録してください

しかし、私が何かが欠けてるようだ - grpcサーバにサービスを登録するフェーズがある例ではなく、私のprotoc出力はエクスポートなし登録方法がありません:

s := grpc.NewServer() 
pb.RegisterGreeterServer(s, &server{}) 

だったがprotobuf3ファイルのコンパイルの変更?

私は間違った方法でコンパイルしていますか?

protoc --go_output=. *.proto

そして、どのように私は、サーバーのサービスを動作させることができ、それが現在ではありません。

func main() { 
    lis, err := net.Listen("tcp", port) 
    if err != nil { 
     log.Fatalf("failed to listen: %v", err) 
    } 
    s := grpc.NewServer() 
    //register should go here?! 
    reflection.Register(s) 
    if err := s.Serve(lis); err != nil { 
     log.Fatalf("failed to server: %v", err) 
    } 
} 
+3

私の知る限りでは--go_out = plugins = grpc :. * .proto' https://github.com/golang/protobuf#grpc-support –

答えて

2

は、私は間違った方法でそれをコンパイルしてるのですか?

protoc --go_output=. *.proto

はい。 commentWendy Adiで指摘されているように、protocへのコマンドラインオプションは--go_outでなく、​​3210でなく、plugins=grpcオプションも必要です(codegen.sh script)。あなたは、HelloWorldの例では.pb.goファイルを再生成するprotocを使用することができるはずです。

cd $GOPATH/src/google.golang.org/grpc/examples/helloworld 
mv helloworld.pb.go helloworld.pb.go.orig 
protoc --go_out=plugins=grpc:. helloworld.proto 

greeter_serverはその後正しくコンパイルする必要がありますあなたがプラグイン `protocでそれをコンパイルする必要がありgrpc行くため

cd ../greeter_server 
go build . 
関連する問題