gRPC 错误:解决“连接在收到服务器前言之前关闭”
尝试使用提供的代码片段连接到 gRPC 服务器时:
func newClient() *dgo.Dgraph { d, err := grpc.Dial("localhost:9080", grpc.WithInsecure()) if err != nil { log.Fatal(err) } return dgo.NewDgraphClient( api.NewDgraphClient(d), ) }
您可能会遇到以下情况错误:
rpc error: code = Unavailable desc = connection closed before server preface received
根本原因
当服务器在启用传输层安全 (TLS) 的情况下运行,但客户端尝试连接时,通常会发生此错误不使用 TLS。
解决方案
解决此问题问题,您需要确保:
在客户端上正确配置 TLS 选项:
tlsConfig := &tls.Config{ Certificates: []tls.Certificate{myCertificate}, RootCAs: myCAPool, } tlsOpt := grpc.WithTransportCredentials(credentials.NewTLS(tlsConfig)) conn, err := grpc.DialContext(ctx, "<connection_string>", tlsOpt)
客户端证书用于客户端连接:
确保您在客户端连接上使用客户端证书。
通过在客户端上正确配置 TLS,您可以防止“连接关闭”在服务器前言收到之前”错误并与启用 TLS 的服务器建立成功连接。
以上是gRPC 错误:如何修复'连接在收到服务器前言之前已关闭”?的详细内容。更多信息请关注PHP中文网其他相关文章!