grpc-demo/client/client.go

90 lines
1.8 KiB
Go

/*
* @Date: 2021-06-15 22:08:18
* @LastEditors: viletyy
* @LastEditTime: 2021-06-16 00:49:55
* @FilePath: /grpc-demo/client/client.go
*/
package main
import (
"context"
"flag"
"io"
"log"
pb "github.com/go-inpro/grpc-demo/proto"
"google.golang.org/grpc"
)
var port string
func init() {
flag.StringVar(&port, "port", "8001", "启动端口号")
flag.Parse()
}
func main() {
conn, _ := grpc.Dial(":"+port, grpc.WithInsecure())
defer conn.Close()
client := pb.NewGreeterClient(conn)
_ = SayHello(client) // 单次RPC
_ = SayList(client, &pb.HelloRequest{Name: "viletyy"}) // 服务端流式RPC
_ = SayRecord(client, &pb.HelloRequest{Name: "viletyy"}) // 客户端流式RPC
_ = SayRoute(client, &pb.HelloRequest{Name: "viletyy"}) // 双向流式RPC
}
func SayHello(client pb.GreeterClient) error {
resp, _ := client.SayHello(context.Background(), &pb.HelloRequest{Name: "viletyy"})
log.Printf("client.SayHello resp: %s", resp.Message)
return nil
}
func SayList(client pb.GreeterClient, r *pb.HelloRequest) error {
stream, _ := client.SayList(context.Background(), r)
for {
resp, err := stream.Recv()
if err == io.EOF {
break
}
if err != nil {
return err
}
log.Printf("resp: %v", resp)
}
return nil
}
func SayRecord(client pb.GreeterClient, r *pb.HelloRequest) error {
stream, _ := client.SayRecord(context.Background())
for n := 0; n < 6; n++ {
_ = stream.Send(r)
}
resp, _ := stream.CloseAndRecv()
log.Printf("resp err: %v", resp)
return nil
}
func SayRoute(client pb.GreeterClient, r *pb.HelloRequest) error {
stream, _ := client.SayRoute(context.Background())
for n := 0; n <= 6; n++ {
_ = stream.Send(r)
resp, err := stream.Recv()
if err == io.EOF {
break
}
if err != nil {
return nil
}
log.Printf("resp err: %v", resp)
}
_ = stream.CloseSend()
return nil
}