func pingPong(i int) { // Create new request to service go.micro.srv.example, method Example.Call // Request can be empty as its actually ignored and merely used to call the handler req := client.NewRequest("go.micro.srv.example", "Example.PingPong", &example.StreamingRequest{}) stream, err := client.Stream(context.Background(), req) if err != nil { fmt.Println("err:", err) return } for j := 0; j < i; j++ { if err := stream.Send(&example.Ping{Stroke: int64(j + 1)}); err != nil { fmt.Println("err:", err) return } rsp := &example.Pong{} err := stream.Recv(rsp) if err != nil { fmt.Println("recv err", err) break } fmt.Printf("Sent ping %v got pong %v\n", j+1, rsp.Stroke) } if stream.Error() != nil { fmt.Println("stream err:", err) return } if err := stream.Close(); err != nil { fmt.Println("stream close err:", err) } }
func stream(i int) { // Create new request to service go.micro.srv.example, method Example.Call // Request can be empty as its actually ignored and merely used to call the handler req := client.NewRequest("go.micro.srv.example", "Example.Stream", &example.StreamingRequest{}) stream, err := client.Stream(context.Background(), req) if err != nil { fmt.Println("err:", err) return } if err := stream.Send(&example.StreamingRequest{Count: int64(i)}); err != nil { fmt.Println("err:", err) return } for stream.Error() == nil { rsp := &example.StreamingResponse{} err := stream.Recv(rsp) if err != nil { fmt.Println("recv err", err) break } fmt.Println("Stream: rsp:", rsp.Count) } if stream.Error() != nil { fmt.Println("stream err:", err) return } if err := stream.Close(); err != nil { fmt.Println("stream close err:", err) } }