gRPC 錯誤:解決「連線在收到伺服器前言之前關閉」
嘗試使用提供的程式碼片段連接到 gRPC 伺服器時:
1 2 3 4 5 6 7 8 9 10 | func newClient() *dgo.Dgraph {
d, err := grpc.Dial( "localhost:9080" , grpc.WithInsecure())
if err != nil {
log.Fatal(err)
}
return dgo.NewDgraphClient(
api.NewDgraphClient(d),
)
}
|
登入後複製
您可能會遇到以下情況錯誤:
1 | rpc error: code = Unavailable desc = connection closed before server preface received
|
登入後複製
根本原因
當伺服器在啟用傳輸層安全(TLS ) 的情況下運行,但客戶端嘗試連線時,通常會發生此錯誤不使用TLS。
解決方案
解決此問題問題,您需要確保:
-
在客戶端上正確配置TLS選項:
1 2 3 4 5 6 7 8 | 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中文網其他相關文章!