grpc-demo/server/server.go

82 lines
1.5 KiB
Go

/*
* @Date: 2021-06-15 22:01:41
* @LastEditors: viletyy
* @LastEditTime: 2021-06-16 00:48:57
* @FilePath: /grpc-demo/server/server.go
*/
package main
import (
"context"
"flag"
"io"
"log"
"net"
pb "github.com/go-inpro/grpc-demo/proto"
"google.golang.org/grpc"
)
var port string
func init() {
flag.StringVar(&port, "port", "8001", "启动端口号")
flag.Parse()
}
type GreeterServer struct {
pb.UnimplementedGreeterServer
}
func (s *GreeterServer) SayHello(ctx context.Context, r *pb.HelloRequest) (*pb.HelloReply, error) {
return &pb.HelloReply{Message: "hello.world"}, nil
}
func (s *GreeterServer) SayList(r *pb.HelloRequest, stream pb.Greeter_SayListServer) error {
for n := 0; n <= 6; n++ {
_ = stream.Send(&pb.HelloReply{Message: "hello.list"})
}
return nil
}
func (s *GreeterServer) SayRecord(stream pb.Greeter_SayRecordServer) error {
for {
resp, err := stream.Recv()
if err == io.EOF {
message := &pb.HelloReply{Message: "say.record"}
return stream.SendAndClose(message)
}
if err != nil {
return err
}
log.Printf("resp: %v", resp)
}
}
func (s *GreeterServer) SayRoute(stream pb.Greeter_SayRouteServer) error {
n := 0
for {
_ = stream.Send(&pb.HelloReply{Message: "say.route"})
resp, err := stream.Recv()
if err == io.EOF {
return nil
}
if err != nil {
return err
}
n++
log.Printf("resp: %v", resp)
}
}
func main() {
server := grpc.NewServer()
pb.RegisterGreeterServer(server, &GreeterServer{})
lis, _ := net.Listen("tcp", ":"+port)
server.Serve(lis)
}