Skip to content

Client 复用同个连接,出现 rpc error: code = Unknown desc =  #8

@eddycjy

Description

@eddycjy

问题

客户端复用 ClientConn 后,无法再次调用 RPC 方法成功

server

直接使用 greeter_server.php

client

直接改造 greeter_client.go,如下:

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions