82 lines
1.5 KiB
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)
|
|
}
|