1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| /* Client 代码 1. 获取stream, 并发送 HelloWorld 2. for 循环获取服务端推送的消息, err == io.EOF 则表示服务端关闭stream了 退出 */ func serverStream(client pb.EchoClient) { // 获取stream stream, err := client.ServerStreamingEcho(context.Background(), &pb.EchoRequest{Message: "Hello World"}) if err != nil { log.Fatalf("could not echo: %v", err) } // for 循环获取服务端推送的消息 for { // 通过 Recv() 不断获取服务端send()推送的消息 resp, err := stream.Recv() // err==io.EOF 则表示服务端关闭stream了 退出 if err == io.EOF { log.Println("server closed") break } if err != nil { log.Printf("Recv error:%v", err) continue } log.Printf("Recv data:%v", resp.GetMessage()) } }
|