client.go 867 B

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