我有一个 gRPC 客户端和服务器,当我运行它们时,它们似乎都正常运行,但当我试图使用客户端拨号服务器时,出现了错误:
"Error": {
"code": 14,
"message": "all SubConns are in TransientFailure"
},
我不知道这是什么。我尝试在谷歌上找到解决方案,但没有成功。
有什么想法吗?这是我的服务器代码:
lis, err := net.Listen("tcp", fmt.Sprintf("%s:%d", cfg.Host, cfg.Port))
if err != nil {
logger.Critical(ctx, "failed to listen: %v", err)
} else {
logger.Info(ctx, "[userserver] running at %s:%d", cfg.Host, cfg.Port)
}
grpcServer := grpc.NewServer()
userServer := userserver.New()
pb.RegisterDomainServer(grpcServer, userServer)
rpcErr := grpcServer.Serve(lis)
if rpcErr != nil {
logger.Critical(ctx, "failed to serve: %v", rpcErr)
}
顺便提一句,这里的服务器显示了日志:
2018/02/08 07:03:37.603287 信息:[用户服务器] 运行在 localhost:3001
而客户端:
conn, err := grpc.Dial(c.serverAddr, grpc.WithInsecure())
if err != nil {
return err
}
defer conn.Close()
client := pb.NewDomainClient(conn)
_, err = client.Dispatch(ctx, &pb.Command{
Name: command,
Payload: payload,
})
这是端口缓冲区
service Domain {
rpc Dispatch(Command) returns (Response);
}
message Command {
string name = 1;
bytes payload = 2;
}
message Response {}
golang:latest
上,所以lsof
、netstat
和nmap
命令会提示 command not found。 - vardius