mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-02-04 18:12:27 +08:00
76 lines
1.6 KiB
Go
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
|
|
}
|