2017-02-04 3 views
0

Я работаю с этим example для создания сервера go gang grpc.golang + grpc: зарегистрируйте услугу на GrpcServer

Но мне кажется, что я что-то не хватаю - В примере есть фаза регистрации услуги КПГР-сервер, но мой выход 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

AFAIK для Go КПГР вы должны скомпилировать его с плагином 'protoc --go_out = плагин = КПГРЫ :. * .proto' https://github.com/golang/protobuf#grpc-support –

ответ

2

Am Я компиляции в неправильном направлении?

protoc --go_output=. *.proto

Да. Как указано в comment на Wendy Adi, опция командной строки protoc должна быть --go_out не --go_output, а также необходима опция plugins=grpc (согласно codegen.sh script). Вы должны быть в состоянии использовать protoc регенерировать .pb.go файл в примере HelloWorld:

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 должен компилировать правильно потом:

cd ../greeter_server 
go build . 
Смежные вопросы