// helloworld以下のdirにサーバー用のメソッドを自動生成
$ protoc helloworld.proto --go_out=plugins=grpc:helloworld
// grpcurlでレスポンスチェック
$ grpcurl -plaintext localhost:8080 Greeter.SayHello
Last active
May 7, 2020 21:47
-
-
Save yayamochi/b5748bdf710e2bf31fbdc27b87e8b0d1 to your computer and use it in GitHub Desktop.
Go gRPC sample
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// これは試してないけどこんなかんじぽい | |
package main | |
import ( | |
"context" | |
"log" | |
"os" | |
"time" | |
"google.golang.org/grpc" | |
pb "google.golang.org/grpc/examples/helloworld/helloworld" | |
) | |
const ( | |
address = "localhost:50051" | |
defaultName = "world" | |
) | |
func main() { | |
// Set up a connection to the server. | |
conn, err := grpc.Dial(address, grpc.WithInsecure(), grpc.WithBlock()) | |
if err != nil { | |
log.Fatalf("did not connect: %v", err) | |
} | |
defer conn.Close() | |
c := pb.NewGreeterClient(conn) | |
// Contact the server and print out its response. | |
name := defaultName | |
if len(os.Args) > 1 { | |
name = os.Args[1] | |
} | |
ctx, cancel := context.WithTimeout(context.Background(), time.Second) | |
defer cancel() | |
r, err := c.SayHello(ctx, &pb.HelloRequest{Name: name}) | |
if err != nil { | |
log.Fatalf("could not greet: %v", err) | |
} | |
log.Printf("Greeting: %s", r.GetMessage()) | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
syntax = "proto3"; | |
service Greeter { | |
rpc SayHello (HelloRequest) returns (HelloReply) {} | |
rpc SayHelloAgain (HelloRequest) returns (HelloReply){} | |
} | |
message HelloRequest { | |
string name = 1; | |
} | |
message HelloReply { | |
string message = 1; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"context" | |
"fmt" | |
"google.golang.org/grpc" | |
"google.golang.org/grpc/reflection" | |
"grpc.sample/helloworld" | |
"log" | |
"net" | |
) | |
type server struct { | |
helloworld.UnimplementedGreeterServer | |
} | |
const port = ":8080" | |
func main() { | |
lis, err := net.Listen("tcp", port) | |
if err != nil { | |
log.Fatalf("failed to listen: %v", err) | |
} | |
s := grpc.NewServer() | |
helloworld.RegisterGreeterServer(s, &server{}) | |
reflection.Register(s) | |
fmt.Println("connect!") | |
if err := s.Serve(lis); err != nil { | |
log.Fatalf("failed to serve: %v", err) | |
} | |
} | |
func (s *server) SayHello(ctx context.Context, in *helloworld.HelloRequest) (*helloworld.HelloReply, error) { | |
return &helloworld.HelloReply{Message: "Hello" + in.GetName()}, nil | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment