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中文網其他相關文章!