Files
go-zero/example/rpc/client/stream/client.go

62 lines
961 B
Go
Raw Normal View History

2020-07-26 17:09:05 +08:00
package main
import (
"context"
"flag"
"fmt"
"log"
2020-09-18 18:15:39 +08:00
"sync"
2020-07-26 17:09:05 +08:00
2020-08-08 16:40:10 +08:00
"github.com/tal-tech/go-zero/core/discov"
"github.com/tal-tech/go-zero/example/rpc/remote/stream"
2020-09-18 11:41:52 +08:00
"github.com/tal-tech/go-zero/zrpc"
2020-07-26 17:09:05 +08:00
)
const name = "kevin"
2020-09-18 11:41:52 +08:00
var key = flag.String("key", "zrpc", "the key on etcd")
2020-07-26 17:09:05 +08:00
func main() {
flag.Parse()
2020-09-18 11:41:52 +08:00
client, err := zrpc.NewClientNoAuth(discov.EtcdConf{
2020-07-26 17:09:05 +08:00
Hosts: []string{"localhost:2379"},
Key: *key,
})
if err != nil {
log.Fatal(err)
}
2020-08-06 20:55:38 +08:00
conn := client.Conn()
2020-07-26 17:09:05 +08:00
greet := stream.NewStreamGreeterClient(conn)
stm, err := greet.Greet(context.Background())
if err != nil {
log.Fatal(err)
}
2020-09-18 18:15:39 +08:00
var wg sync.WaitGroup
2020-07-26 17:09:05 +08:00
go func() {
2020-09-18 18:15:39 +08:00
for {
2020-07-26 17:09:05 +08:00
resp, err := stm.Recv()
if err != nil {
log.Fatal(err)
}
fmt.Println("=>", resp.Greet)
2020-09-18 18:15:39 +08:00
wg.Done()
2020-07-26 17:09:05 +08:00
}
}()
for i := 0; i < 3; i++ {
2020-09-18 18:15:39 +08:00
wg.Add(1)
2020-07-26 17:09:05 +08:00
fmt.Println("<=", name)
if err = stm.Send(&stream.StreamReq{
Name: name,
}); err != nil {
log.Fatal(err)
}
}
2020-09-18 18:07:08 +08:00
2020-09-18 18:15:39 +08:00
wg.Wait()
2020-07-26 17:09:05 +08:00
}