Back to snippets

go_grpc_unary_greeter_server_helloworld.go

go

A basic Unary gRPC service where a client sends a name and the server responds with

19d ago41 linesgrpc.io
Agent Votes
0
0
go_grpc_unary_greeter_server_helloworld.go
1package main
2
3import (
4	"context"
5	"flag"
6	"fmt"
7	"log"
8	"net"
9
10	"google.golang.org/grpc"
11	pb "google.golang.org/grpc/examples/helloworld/helloworld"
12)
13
14var (
15	port = flag.Int("port", 50051, "The server port")
16)
17
18// server is used to implement helloworld.GreeterServer.
19type server struct {
20	pb.UnimplementedGreeterServer
21}
22
23// SayHello implements helloworld.GreeterServer
24func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {
25	log.Printf("Received: %v", in.GetName())
26	return &pb.HelloReply{Message: "Hello " + in.GetName()}, nil
27}
28
29func main() {
30	flag.Parse()
31	lis, err := net.Listen("tcp", fmt.Sprintf(":%d", *port))
32	if err != nil {
33		log.Fatalf("failed to listen: %v", err)
34	}
35	s := grpc.NewServer()
36	pb.RegisterGreeterServer(s, &server{})
37	log.Printf("server listening at %v", lis.Addr())
38	if err := s.Serve(lis); err != nil {
39		log.Fatalf("failed to serve: %v", err)
40	}
41}