package main
import (
"log"
"os"
"golang.org/x/net/context"
"google.golang.org/grpc"
pb "google.golang.org/grpc/examples/helloworld/helloworld"
)
const (
address = "localhost:50051"
defaultName = "world"
)
func main() {
// Set up a connection to the server.
conn, err := grpc.Dial(address, grpc.WithInsecure())
if err != nil {
log.Fatalf("did not connect: %v", err)
}
defer conn.Close()
c := pb.NewGreeterClient(conn)
// Contact the server and print out its response.
name := defaultName
if len(os.Args) > 1 {
name = os.Args[1]
}
r, err := c.SayHello(context.Background(), &pb.HelloRequest{Name: name})
if err != nil {
log.Fatalf("could not greet1: %v", err)
}
log.Printf("Greeting: %s", r.Message)
r, err = c.SayHello(context.Background(), &pb.HelloRequest{Name: name})
if err != nil {
log.Fatalf("could not greet2: %v", err)
}
log.Printf("Greeting: %s", r.Message)
}
$ go run greeter_client.go
2019/04/18 14:18:06 Greeting: Hello world
2019/04/18 14:18:06 could not greet2: rpc error: code = Unknown desc =
exit status 1
问题
客户端复用 ClientConn 后,无法再次调用 RPC 方法成功
server
直接使用 greeter_server.php
client
直接改造 greeter_client.go,如下:
输出结果