添加了节点服务器,各个服务器之间支持多对多

This commit is contained in:
flswld
2022-12-24 04:14:33 +08:00
parent 16dd9c1e87
commit 7e86669628
92 changed files with 1429 additions and 287 deletions

81
common/rpc/client.go Normal file
View File

@@ -0,0 +1,81 @@
package rpc
import (
"hk4e/common/config"
gsapi "hk4e/gs/api"
nodeapi "hk4e/node/api"
"github.com/nats-io/nats.go"
"github.com/nats-io/nats.go/encoders/protobuf"
)
// Client natsrpc客户端
type Client struct {
conn *nats.Conn
Discovery *DiscoveryClient
GM *GMClient
}
// NewClient 构造
func NewClient() (*Client, error) {
r := new(Client)
conn, err := nats.Connect(config.CONF.MQ.NatsUrl)
if err != nil {
return nil, err
}
r.conn = conn
discoveryClient, err := newDiscoveryClient(conn)
if err != nil {
return nil, err
}
r.Discovery = discoveryClient
gmClient, err := newGmClient(conn)
if err != nil {
return nil, err
}
r.GM = gmClient
return r, nil
}
// Close 销毁
func (c *Client) Close() {
c.conn.Close()
}
// DiscoveryClient node的discovery服务
type DiscoveryClient struct {
nodeapi.DiscoveryNATSRPCClient
}
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(conn *nats.Conn) (*GMClient, error) {
enc, err := nats.NewEncodedConn(conn, protobuf.PROTOBUF_ENCODER)
if err != nil {
return nil, err
}
cli, err := gsapi.NewGMNATSRPCClient(enc)
if err != nil {
return nil, err
}
return &GMClient{
GMNATSRPCClient: cli,
}, nil
}