client.go 995 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. done := make(chan struct{})
  29. go func() {
  30. defer func() {
  31. done <- struct{}{}
  32. }()
  33. for i := 0; i < 3; i++ {
  34. resp, err := stm.Recv()
  35. if err != nil {
  36. log.Fatal(err)
  37. }
  38. fmt.Println("=>", resp.Greet)
  39. }
  40. }()
  41. for i := 0; i < 3; i++ {
  42. fmt.Println("<=", name)
  43. if err = stm.Send(&stream.StreamReq{
  44. Name: name,
  45. }); err != nil {
  46. log.Fatal(err)
  47. }
  48. }
  49. <-done
  50. }