Files
hk4e/common/rpc/client.go
2023-04-15 20:02:35 +08:00

76 lines
1.6 KiB
Go

package rpc
import (
"hk4e/common/config"
gsapi "hk4e/gs/api"
nodeapi "hk4e/node/api"
"github.com/byebyebruce/natsrpc"
"github.com/nats-io/nats.go"
"github.com/nats-io/nats.go/encoders/protobuf"
)
// natsrpc客户端
// DiscoveryClient node的discovery服务
type DiscoveryClient struct {
nodeapi.DiscoveryNATSRPCClient
}
func NewDiscoveryClient() (*DiscoveryClient, error) {
conn, err := nats.Connect(config.GetConfig().MQ.NatsUrl)
if err != nil {
return nil, err
}
discoveryClient, err := newDiscoveryClient(conn)
if err != nil {
return nil, err
}
return discoveryClient, nil
}
func newDiscoveryClient(conn *nats.Conn) (*DiscoveryClient, error) {
enc, err := nats.NewEncodedConn(conn, protobuf.PROTOBUF_ENCODER)
if err != nil {
return nil, err
}
cli, err := nodeapi.NewDiscoveryNATSRPCClient(enc)
if err != nil {
return nil, err
}
return &DiscoveryClient{
DiscoveryNATSRPCClient: cli,
}, nil
}
// GMClient gs的gm服务
type GMClient struct {
gsapi.GMNATSRPCClient
}
func NewGMClient(gsId uint32) (*GMClient, error) {
conn, err := nats.Connect(config.GetConfig().MQ.NatsUrl)
if err != nil {
return nil, err
}
gmClient, err := newGmClient(conn, gsId)
if err != nil {
return nil, err
}
return gmClient, nil
}
func newGmClient(conn *nats.Conn, gsId uint32) (*GMClient, error) {
enc, err := nats.NewEncodedConn(conn, protobuf.PROTOBUF_ENCODER)
if err != nil {
return nil, err
}
cli, err := gsapi.NewGMNATSRPCClient(enc, natsrpc.WithClientID(gsId))
if err != nil {
return nil, err
}
return &GMClient{
GMNATSRPCClient: cli,
}, nil
}