• Stars
    star
    101
  • Rank 337,084 (Top 7 %)
  • Language
    Go
  • License
    MIT License
  • Created almost 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

gRPC bidirectional streaming example written in golang

Golang gRPC bidirectional streaming example

  • client sends random numbers to server
  • server receives number and sends it back if the number greater than all previous numbers
  • both client and server handle context errors (try to close client during send)

Requirements

  • go 1.17.1
  • protobuf installed
  • go support for protobuf installed

Installation

MacOS

brew install go
brew install protobuf
go install google.golang.org/grpc/cmd/[email protected]

Make sure protoc-gen-go added in PATH

To add it to PATH you can use bash profile for example.

Edit vim ~/.bash_profile, add: export PATH="$PATH:$(go env GOPATH)/bin", run source ~/.bash_profile to apply changes.

Linux

TBD

Complie

make all

It should create two binaries server and client

Use

Start server ./server and in other terminal start ./client

Client output example:

./client
2017/12/01 14:16:54 0 sent
2017/12/01 14:16:54 1 sent
2017/12/01 14:16:54 new max 1 received
2017/12/01 14:16:55 2 sent
2017/12/01 14:16:55 new max 2 received
2017/12/01 14:16:55 0 sent
2017/12/01 14:16:55 0 sent
2017/12/01 14:16:55 4 sent
2017/12/01 14:16:55 new max 4 received
2017/12/01 14:16:55 0 sent
2017/12/01 14:16:56 6 sent
2017/12/01 14:16:56 new max 6 received
2017/12/01 14:16:56 3 sent
2017/12/01 14:16:56 2 sent
2017/12/01 14:16:56 finished with max=6

Server output:

./server
2017/12/01 14:16:54 start new server
2017/12/01 14:16:54 send new max=1
2017/12/01 14:16:55 send new max=2
2017/12/01 14:16:55 send new max=4
2017/12/01 14:16:56 send new max=6
2017/12/01 14:16:56 exit