Maison >développement back-end >Golang >Erreur gRPC : Comment réparer « Connexion fermée avant la réception de la préface du serveur » ?

Erreur gRPC : Comment réparer « Connexion fermée avant la réception de la préface du serveur » ?

DDD
DDDoriginal
2024-12-11 07:29:09403parcourir

gRPC Error: How to Fix

Erreur gRPC : résolution de « Connexion fermée avant la réception de la préface du serveur »

Lors de la tentative de connexion à un serveur gRPC à l'aide de l'extrait de code fourni :

func newClient() *dgo.Dgraph {
    d, err := grpc.Dial("localhost:9080", grpc.WithInsecure())
    if err != nil {
        log.Fatal(err)
    }

    return dgo.NewDgraphClient(
        api.NewDgraphClient(d),
    )
}

vous pouvez rencontrer ce qui suit erreur :

rpc error: code = Unavailable desc = connection closed before server preface received

Cause première

Cette erreur se produit généralement lorsque le serveur s'exécute avec Transport Layer Security (TLS) activé, mais que le client tente de se connecter sans utiliser TLS.

Solution

Pour résoudre ce problème, vous devez vous assurer que :

  1. Les options TLS sont correctement configurées sur le client :

    tlsConfig := &tls.Config{
        Certificates: []tls.Certificate{myCertificate},
        RootCAs:      myCAPool,
    }
    
    tlsOpt := grpc.WithTransportCredentials(credentials.NewTLS(tlsConfig))
    
    conn, err := grpc.DialContext(ctx, "<connection_string>", tlsOpt)
  2. Les certificats clients sont Utilisé sur la connexion client :

    Assurez-vous que vous utilisez des certificats clients sur le client connexion.

En configurant correctement TLS sur le client, vous pouvez empêcher l'erreur « Connexion fermée avant la réception de la préface du serveur » et établir une connexion réussie au serveur compatible TLS.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn