Heim >Backend-Entwicklung >Golang >gRPC-Fehler: Wie behebt man „Verbindung geschlossen, bevor Server-Vorwort empfangen wurde'?

gRPC-Fehler: Wie behebt man „Verbindung geschlossen, bevor Server-Vorwort empfangen wurde'?

DDD
DDDOriginal
2024-12-11 07:29:09459Durchsuche

gRPC Error: How to Fix

gRPC-Fehler: Behebung von „Verbindung geschlossen, bevor Server-Vorwort empfangen wurde“

Beim Versuch, mit dem bereitgestellten Code-Snippet eine Verbindung zu einem gRPC-Server herzustellen:

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

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

Sie können auf Folgendes stoßen Fehler:

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

Ursache

Dieser Fehler tritt normalerweise auf, wenn der Server mit aktivierter Transport Layer Security (TLS) läuft, der Client jedoch versucht, eine Verbindung herzustellen ohne TLS zu verwenden.

Lösung

Um dieses Problem zu beheben, müssen Sie sicherstellen dass:

  1. TLS-Optionen auf dem Client korrekt konfiguriert sind:

    tlsConfig := &tls.Config{
        Certificates: []tls.Certificate{myCertificate},
        RootCAs:      myCAPool,
    }
    
    tlsOpt := grpc.WithTransportCredentials(credentials.NewTLS(tlsConfig))
    
    conn, err := grpc.DialContext(ctx, "<connection_string>", tlsOpt)
  2. Client-Zertifikate sind Wird auf der Client-Verbindung verwendet:

    Stellen Sie sicher, dass Sie Client-Zertifikate auf dem Client verwenden Verbindung.

Durch die ordnungsgemäße Konfiguration von TLS auf dem Client können Sie den Fehler „Verbindung geschlossen, bevor Server-Vorwort empfangen wurde“ verhindern und eine erfolgreiche Verbindung zum TLS-fähigen Server herstellen.

Das obige ist der detaillierte Inhalt vongRPC-Fehler: Wie behebt man „Verbindung geschlossen, bevor Server-Vorwort empfangen wurde'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn