package grpc_conn import ( "git.hlsq.asia/mmorpg/service-common/log" "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" "google.golang.org/grpc/keepalive" "time" ) type GrpcConnection struct { sid string conn *grpc.ClientConn } func NewGrpcConnection(sid string, address string) (*GrpcConnection, error) { p := &GrpcConnection{ sid: sid, } conn, err := grpc.NewClient( address, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithStatsHandler(otelgrpc.NewClientHandler()), grpc.WithKeepaliveParams( keepalive.ClientParameters{ Time: 30 * time.Second, // 保活探测包发送的时间间隔 Timeout: 10 * time.Second, // 保活探测包的超时时间 PermitWithoutStream: true, }, ), ) if err != nil { log.Errorf("create grpc err: %v, sid: %v, addr: %v", err, sid, address) return nil, err } p.conn = conn return p, nil } func (g *GrpcConnection) GetConnection() *grpc.ClientConn { return g.conn }