client.go 893 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package main
  2. import (
  3. "context"
  4. "flag"
  5. "fmt"
  6. "log"
  7. "github.com/tal-tech/go-zero/core/discov"
  8. "github.com/tal-tech/go-zero/example/rpc/remote/stream"
  9. "github.com/tal-tech/go-zero/zrpc"
  10. )
  11. const name = "kevin"
  12. var key = flag.String("key", "zrpc", "the key on etcd")
  13. func main() {
  14. flag.Parse()
  15. client, err := zrpc.NewClientNoAuth(discov.EtcdConf{
  16. Hosts: []string{"localhost:2379"},
  17. Key: *key,
  18. })
  19. if err != nil {
  20. log.Fatal(err)
  21. }
  22. conn := client.Conn()
  23. greet := stream.NewStreamGreeterClient(conn)
  24. stm, err := greet.Greet(context.Background())
  25. if err != nil {
  26. log.Fatal(err)
  27. }
  28. go func() {
  29. for {
  30. resp, err := stm.Recv()
  31. if err != nil {
  32. log.Fatal(err)
  33. }
  34. fmt.Println("=>", resp.Greet)
  35. }
  36. }()
  37. for i := 0; i < 3; i++ {
  38. fmt.Println("<=", name)
  39. if err = stm.Send(&stream.StreamReq{
  40. Name: name,
  41. }); err != nil {
  42. log.Fatal(err)
  43. }
  44. }
  45. }