yuuis / grpc_sample

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

gRPC sample

Directory

.
├── api ... API Server (Golang)
├── client ... API Client (Rails)
├── proto ... proto files

API Server

How to update boiler plate codes for server

install protobuf and plugins

brew install protobuf
go get -u -v github.com/golang/protobuf/protoc-gen-go
go get -u -v google.golang.org/grpc
cd grpc_sample
protoc -Iproto --go_out=plugins=grpc:api proto/*.proto

Run server

cd api
go run server/server.go

Client (Rails)

How to update boiler plate codes for client

cd client
bundle install

bundle exec grpc_tools_ruby_protoc -I ../proto/ --ruby_out=app/gen/api/pancake/maker --grpc_out=app/gen/api/pancake/maker ../proto/pancake.proto
bundle exec grpc_tools_ruby_protoc -I ../proto/ --ruby_out=app/gen/api/image/uploader --grpc_out=app/gen/api/image/uploader ../proto/image_uploader.proto

Run client

bundle exec rails c
# request to bake a pancake  
Bakery.bake_pancake(Bakery::Menu::CLASSIC)

# request to send a report
Bakery.report
# upload an image
ImageUploader.chunked_upload('file_path')

Client (grpc_cli)

Install grpc_cli

brew or build from repository > grpc/command_line_tool.md at master · grpc/grpc · GitHub

brew tap grpc/grpc
brew install grpc

Use

# ls
grpc_cli ls localhost:50051 pancake.maker.PancakeBakerService -l

# call
./grpc_cli call localhost:50051 pancake.maker.PancakeBakerService.Bake 'menu: 1'
./grpc_cli call localhost:50051 pancake.maker.PancakeBakerService.Report ''

Reference

スターティングgRPC

About


Languages

Language:Ruby 83.4%Language:Go 16.6%