44 lines
1.1 KiB
Go
44 lines
1.1 KiB
Go
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
|
|
}
|