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:
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)
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!