@@ -26,41 +26,43 @@ import (
26
26
"time"
27
27
28
28
"google.golang.org/grpc"
29
- "google.golang.org/grpc/codes"
30
29
"google.golang.org/grpc/credentials/insecure"
31
- pb "google.golang.org/grpc/examples/helloworld/helloworld"
32
- "google.golang.org/grpc/status"
30
+ pb "google.golang.org/grpc/examples/features/proto/echo"
33
31
)
34
32
35
33
var addr = flag .String ("addr" , "localhost:50052" , "the address to connect to" )
36
34
37
35
func main () {
38
36
flag .Parse ()
39
37
40
- // Set up a connection to the server.
41
38
conn , err := grpc .NewClient (* addr , grpc .WithTransportCredentials (insecure .NewCredentials ()))
42
39
if err != nil {
43
- log .Fatalf ("Failed to connect : %v" , err )
40
+ log .Fatalf ("Failed to create new client : %v" , err )
44
41
}
45
42
defer conn .Close ()
46
- c := pb .NewGreeterClient (conn )
43
+ c := pb .NewEchoClient (conn )
47
44
48
- ctx , cancel := context .WithTimeout (context .Background (), 10 * time .Second )
45
+ ctx , cancel := context .WithTimeout (context .Background (), 20 * time .Second )
49
46
defer cancel ()
50
47
51
- for i := 1 ; i <= 10 ; i ++ {
52
- log .Printf ("Calling SayHello %d time" , i )
53
- r , err := c .SayHello (ctx , & pb.HelloRequest {})
48
+ stream , err := c .ServerStreamingEcho (ctx , & pb.EchoRequest {})
49
+ if err != nil {
50
+ log .Fatalf ("Error starting stream: %v" , err )
51
+ }
52
+
53
+ for {
54
+ r , err := stream .Recv ()
54
55
if err != nil {
55
- if status .Code (err ) != codes .InvalidArgument {
56
- log .Printf ("Received unexpected error: %v" , err )
57
- continue
56
+ // Handle the error and close the stream gracefully
57
+ log .Printf ("Error sending request: %v\n " , err )
58
+ err := stream .CloseSend ()
59
+ if err != nil {
60
+ log .Fatalf ("Error closing stream: %v" , err )
58
61
}
59
- log .Printf ( "Received error: %v" , err )
60
- continue
62
+ log .Println ( "Stream closed gracefully" )
63
+ break
61
64
}
62
- log .Printf ("Received response: %s" , r .Message )
63
- time .Sleep (time .Second )
65
+ log .Printf (r .Message )
64
66
}
65
67
66
68
log .Printf ("Client finished interaction with server." )
0 commit comments