完善docker配置文件

This commit is contained in:
flswld
2023-01-20 00:36:06 +08:00
parent cda96a81df
commit 32d57be1ce
15 changed files with 188 additions and 1461 deletions

2
.gitignore vendored
View File

@@ -25,6 +25,8 @@ bin
protocol/proto
gate/client_proto/proto
gate/client_proto/client_proto_gen.go
gs/api/*.pb.go
node/api/*.pb.go
# Log file
*.log

View File

@@ -7,12 +7,39 @@
* Go >= 1.18
* Protoc >= 3.21
* Protoc Gen Go >= 1.28
* Docker >= 20.10
* Docker Compose >= 1.29
> 1. 首次需要安装工具 `make dev_tool`
> 2. 生成协议 `make gen_natsrpc && make gen_proto`
> 3. 生成配置表 `make gen_csv`
## 快速启动
## 快速运行
* 首次需要安装工具
```shell
make dev_tool
```
* 生成协议
```shell
make gen_natsrpc # 生成natsrpc协议
make gen_proto # 生成客户端协议
make gen_client_proto # 生成客户端协议代理(非必要)
```
* 构建
```shell
make build # 构建服务器二进制文件
make docker_build # 构建镜像
```
* 启动
```shell
make gen_csv # 生成配置表
# 启动前请先确保各服务器的配置文件正确
docker-compose up -d # 启动服务器
```
#### 第三方组件

View File

@@ -2,7 +2,7 @@ http_port = 8080
[logger]
level = "DEBUG"
mode = "BOTH"
mode = "CONSOLE"
track = true
max_size = 10485760

View File

@@ -3,7 +3,7 @@ client_proto_proxy_enable = false
[logger]
level = "DEBUG"
mode = "BOTH"
mode = "CONSOLE"
track = true
max_size = 10485760

View File

@@ -8,7 +8,7 @@ gate_tcp_mq_port = 33333
[logger]
level = "DEBUG"
mode = "BOTH"
mode = "CONSOLE"
track = true
max_size = 10485760

View File

@@ -2,7 +2,7 @@ http_port = 9001
[logger]
level = "DEBUG"
mode = "BOTH"
mode = "CONSOLE"
track = true
max_size = 10485760

View File

@@ -5,7 +5,7 @@ gacha_history_server = "https://hk4e.flswld.com/api/v1"
[logger]
level = "DEBUG"
mode = "BOTH"
mode = "CONSOLE"
track = true
max_size = 10485760

View File

@@ -1,6 +1,6 @@
[logger]
level = "DEBUG"
mode = "BOTH"
mode = "CONSOLE"
track = true
max_size = 10485760

View File

@@ -1,6 +1,6 @@
[logger]
level = "DEBUG"
mode = "BOTH"
mode = "CONSOLE"
track = true
max_size = 10485760

147
docker-compose.yaml Normal file
View File

@@ -0,0 +1,147 @@
version: '3'
services:
node_services:
restart: always
image: flswld/node:1.0.0
container_name: node
environment:
TZ: Asia/Shanghai
GOLANG_PROTOBUF_REGISTRATION_CONFLICT: ignore
volumes:
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
- /usr/share/zoneinfo:/usr/share/zoneinfo
- ./docker/node/bin/application.toml:/node/application.toml
deploy:
resources:
limits:
cpus: '1.00'
memory: 128M
dispatch_services:
restart: always
image: flswld/dispatch:1.0.0
container_name: dispatch
ports:
- "8080:8080/tcp"
environment:
TZ: Asia/Shanghai
GOLANG_PROTOBUF_REGISTRATION_CONFLICT: ignore
volumes:
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
- /usr/share/zoneinfo:/usr/share/zoneinfo
- ./docker/dispatch/bin/application.toml:/dispatch/application.toml
- ./docker/dispatch/bin/key:/dispatch/key
- ./docker/dispatch/bin/static:/dispatch/static
depends_on:
- node_services
deploy:
resources:
limits:
cpus: '1.00'
memory: 128M
gate_services:
restart: always
image: flswld/gate:1.0.0
container_name: gate
ports:
- "22222:22222/udp"
- "33333:33333/tcp"
environment:
TZ: Asia/Shanghai
GOLANG_PROTOBUF_REGISTRATION_CONFLICT: ignore
volumes:
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
- /usr/share/zoneinfo:/usr/share/zoneinfo
- ./docker/gate/bin/application.toml:/gate/application.toml
- ./docker/gate/bin/key:/gate/key
- ./gate/client_proto/proto/client_cmd.csv:/gate/client_cmd.csv
depends_on:
- dispatch_services
deploy:
resources:
limits:
cpus: '4.00'
memory: 1024M
fight_services:
restart: always
image: flswld/fight:1.0.0
container_name: fight
environment:
TZ: Asia/Shanghai
GOLANG_PROTOBUF_REGISTRATION_CONFLICT: ignore
volumes:
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
- /usr/share/zoneinfo:/usr/share/zoneinfo
- ./docker/fight/bin/application.toml:/fight/application.toml
- ./gate/client_proto/proto/client_cmd.csv:/fight/client_cmd.csv
depends_on:
- gate_services
deploy:
resources:
limits:
cpus: '1.00'
memory: 128M
pathfinding_services:
restart: always
image: flswld/pathfinding:1.0.0
container_name: pathfinding
environment:
TZ: Asia/Shanghai
GOLANG_PROTOBUF_REGISTRATION_CONFLICT: ignore
volumes:
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
- /usr/share/zoneinfo:/usr/share/zoneinfo
- ./docker/pathfinding/bin/application.toml:/pathfinding/application.toml
depends_on:
- fight_services
deploy:
resources:
limits:
cpus: '4.00'
memory: 1024M
gs_services:
restart: always
image: flswld/gs:1.0.0
container_name: gs
environment:
TZ: Asia/Shanghai
GOLANG_PROTOBUF_REGISTRATION_CONFLICT: ignore
volumes:
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
- /usr/share/zoneinfo:/usr/share/zoneinfo
- ./docker/gs/bin/application.toml:/gs/application.toml
- ./gdconf/game_data_config:/gs/game_data_config
- ./gate/client_proto/proto/client_cmd.csv:/gs/client_cmd.csv
depends_on:
- pathfinding_services
deploy:
resources:
limits:
cpus: '4.00'
memory: 4096M
gm_services:
restart: always
image: flswld/gm:1.0.0
container_name: gm
ports:
- "9001:9001/tcp"
environment:
TZ: Asia/Shanghai
GOLANG_PROTOBUF_REGISTRATION_CONFLICT: ignore
volumes:
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
- /usr/share/zoneinfo:/usr/share/zoneinfo
- ./docker/gm/bin/application.toml:/gm/application.toml
depends_on:
- gs_services
deploy:
resources:
limits:
cpus: '1.00'
memory: 128M

View File

@@ -1,56 +0,0 @@
// Code generated by protoc-gen-natsrpc. DO NOT EDIT.
// versions:
// - protoc-gen-natsrpc v0.5.0
// source: api.proto
package api
import (
context "context"
fmt "fmt"
natsrpc "github.com/byebyebruce/natsrpc"
nats_go "github.com/nats-io/nats.go"
proto "google.golang.org/protobuf/proto"
)
var _ = new(context.Context)
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = natsrpc.Version
var _ = nats_go.Version
// GM 服务
type GMNATSRPCServer interface {
Cmd(ctx context.Context, req *CmdRequest) (*CmdReply, error)
}
// RegisterGMNATSRPCServer register GM service
func RegisterGMNATSRPCServer(server *natsrpc.Server, s GMNATSRPCServer, opts ...natsrpc.ServiceOption) (natsrpc.IService, error) {
return server.Register("hk4e.gs.api.GM", s, opts...)
}
// GM 服务
type GMNATSRPCClient interface {
Cmd(ctx context.Context, req *CmdRequest, opt ...natsrpc.CallOption) (*CmdReply, error)
}
type _GMNATSRPCClient struct {
c *natsrpc.Client
}
// NewGMNATSRPCClient
func NewGMNATSRPCClient(enc *nats_go.EncodedConn, opts ...natsrpc.ClientOption) (GMNATSRPCClient, error) {
c, err := natsrpc.NewClient(enc, "hk4e.gs.api.GM", opts...)
if err != nil {
return nil, err
}
ret := &_GMNATSRPCClient{
c: c,
}
return ret, nil
}
func (c *_GMNATSRPCClient) Cmd(ctx context.Context, req *CmdRequest, opt ...natsrpc.CallOption) (*CmdReply, error) {
rep := &CmdReply{}
err := c.c.Request(ctx, "Cmd", req, rep, opt...)
return rep, err
}

View File

@@ -1,228 +0,0 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.26.0
// protoc v3.7.0
// source: api.proto
package api
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type CmdRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
FuncName string `protobuf:"bytes,1,opt,name=func_name,json=funcName,proto3" json:"func_name,omitempty"`
Param []string `protobuf:"bytes,2,rep,name=param,proto3" json:"param,omitempty"`
}
func (x *CmdRequest) Reset() {
*x = CmdRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_api_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CmdRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CmdRequest) ProtoMessage() {}
func (x *CmdRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CmdRequest.ProtoReflect.Descriptor instead.
func (*CmdRequest) Descriptor() ([]byte, []int) {
return file_api_proto_rawDescGZIP(), []int{0}
}
func (x *CmdRequest) GetFuncName() string {
if x != nil {
return x.FuncName
}
return ""
}
func (x *CmdRequest) GetParam() []string {
if x != nil {
return x.Param
}
return nil
}
type CmdReply struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` // 0 表示成功
Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}
func (x *CmdReply) Reset() {
*x = CmdReply{}
if protoimpl.UnsafeEnabled {
mi := &file_api_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CmdReply) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CmdReply) ProtoMessage() {}
func (x *CmdReply) ProtoReflect() protoreflect.Message {
mi := &file_api_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CmdReply.ProtoReflect.Descriptor instead.
func (*CmdReply) Descriptor() ([]byte, []int) {
return file_api_proto_rawDescGZIP(), []int{1}
}
func (x *CmdReply) GetCode() int32 {
if x != nil {
return x.Code
}
return 0
}
func (x *CmdReply) GetMessage() string {
if x != nil {
return x.Message
}
return ""
}
var File_api_proto protoreflect.FileDescriptor
var file_api_proto_rawDesc = []byte{
0x0a, 0x09, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x67, 0x73, 0x2e,
0x61, 0x70, 0x69, 0x22, 0x3f, 0x0a, 0x0a, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14,
0x0a, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70,
0x61, 0x72, 0x61, 0x6d, 0x22, 0x38, 0x0a, 0x08, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79,
0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04,
0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33,
0x0a, 0x02, 0x47, 0x4d, 0x12, 0x2d, 0x0a, 0x03, 0x43, 0x6d, 0x64, 0x12, 0x12, 0x2e, 0x67, 0x73,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x10, 0x2e, 0x67, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x70, 0x6c,
0x79, 0x22, 0x00, 0x42, 0x11, 0x5a, 0x0f, 0x68, 0x6b, 0x34, 0x65, 0x2f, 0x67, 0x73, 0x2f, 0x61,
0x70, 0x69, 0x3b, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_api_proto_rawDescOnce sync.Once
file_api_proto_rawDescData = file_api_proto_rawDesc
)
func file_api_proto_rawDescGZIP() []byte {
file_api_proto_rawDescOnce.Do(func() {
file_api_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_proto_rawDescData)
})
return file_api_proto_rawDescData
}
var file_api_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_api_proto_goTypes = []interface{}{
(*CmdRequest)(nil), // 0: gs.api.CmdRequest
(*CmdReply)(nil), // 1: gs.api.CmdReply
}
var file_api_proto_depIdxs = []int32{
0, // 0: gs.api.GM.Cmd:input_type -> gs.api.CmdRequest
1, // 1: gs.api.GM.Cmd:output_type -> gs.api.CmdReply
1, // [1:2] is the sub-list for method output_type
0, // [0:1] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
}
func init() { file_api_proto_init() }
func file_api_proto_init() {
if File_api_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_api_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CmdRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CmdReply); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_api_proto_rawDesc,
NumEnums: 0,
NumMessages: 2,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_api_proto_goTypes,
DependencyIndexes: file_api_proto_depIdxs,
MessageInfos: file_api_proto_msgTypes,
}.Build()
File_api_proto = out.File
file_api_proto_rawDesc = nil
file_api_proto_goTypes = nil
file_api_proto_depIdxs = nil
}

View File

@@ -1,121 +0,0 @@
// Code generated by protoc-gen-natsrpc. DO NOT EDIT.
// versions:
// - protoc-gen-natsrpc v0.5.0
// source: api.proto
package api
import (
context "context"
fmt "fmt"
natsrpc "github.com/byebyebruce/natsrpc"
nats_go "github.com/nats-io/nats.go"
proto "google.golang.org/protobuf/proto"
)
var _ = new(context.Context)
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = natsrpc.Version
var _ = nats_go.Version
// 节点服务器注册发现服务
type DiscoveryNATSRPCServer interface {
// 服务器启动注册获取appid
RegisterServer(ctx context.Context, req *RegisterServerReq) (*RegisterServerRsp, error)
// 服务器关闭取消注册
CancelServer(ctx context.Context, req *CancelServerReq) (*NullMsg, error)
// 服务器在线心跳保持
KeepaliveServer(ctx context.Context, req *KeepaliveServerReq) (*NullMsg, error)
// 获取负载最小的服务器的appid
GetServerAppId(ctx context.Context, req *GetServerAppIdReq) (*GetServerAppIdRsp, error)
// 获取区服密钥信息
GetRegionEc2B(ctx context.Context, req *NullMsg) (*RegionEc2B, error)
// 获取负载最小的网关服务器的地址和端口
GetGateServerAddr(ctx context.Context, req *GetGateServerAddrReq) (*GateServerAddr, error)
// 获取全部网关服务器信息列表
GetAllGateServerInfoList(ctx context.Context, req *NullMsg) (*GateServerInfoList, error)
// 获取主游戏服务器的appid
GetMainGameServerAppId(ctx context.Context, req *NullMsg) (*GetMainGameServerAppIdRsp, error)
}
// RegisterDiscoveryNATSRPCServer register Discovery service
func RegisterDiscoveryNATSRPCServer(server *natsrpc.Server, s DiscoveryNATSRPCServer, opts ...natsrpc.ServiceOption) (natsrpc.IService, error) {
return server.Register("hk4e.node.api.Discovery", s, opts...)
}
// 节点服务器注册发现服务
type DiscoveryNATSRPCClient interface {
// 服务器启动注册获取appid
RegisterServer(ctx context.Context, req *RegisterServerReq, opt ...natsrpc.CallOption) (*RegisterServerRsp, error)
// 服务器关闭取消注册
CancelServer(ctx context.Context, req *CancelServerReq, opt ...natsrpc.CallOption) (*NullMsg, error)
// 服务器在线心跳保持
KeepaliveServer(ctx context.Context, req *KeepaliveServerReq, opt ...natsrpc.CallOption) (*NullMsg, error)
// 获取负载最小的服务器的appid
GetServerAppId(ctx context.Context, req *GetServerAppIdReq, opt ...natsrpc.CallOption) (*GetServerAppIdRsp, error)
// 获取区服密钥信息
GetRegionEc2B(ctx context.Context, req *NullMsg, opt ...natsrpc.CallOption) (*RegionEc2B, error)
// 获取负载最小的网关服务器的地址和端口
GetGateServerAddr(ctx context.Context, req *GetGateServerAddrReq, opt ...natsrpc.CallOption) (*GateServerAddr, error)
// 获取全部网关服务器信息列表
GetAllGateServerInfoList(ctx context.Context, req *NullMsg, opt ...natsrpc.CallOption) (*GateServerInfoList, error)
// 获取主游戏服务器的appid
GetMainGameServerAppId(ctx context.Context, req *NullMsg, opt ...natsrpc.CallOption) (*GetMainGameServerAppIdRsp, error)
}
type _DiscoveryNATSRPCClient struct {
c *natsrpc.Client
}
// NewDiscoveryNATSRPCClient
func NewDiscoveryNATSRPCClient(enc *nats_go.EncodedConn, opts ...natsrpc.ClientOption) (DiscoveryNATSRPCClient, error) {
c, err := natsrpc.NewClient(enc, "hk4e.node.api.Discovery", opts...)
if err != nil {
return nil, err
}
ret := &_DiscoveryNATSRPCClient{
c: c,
}
return ret, nil
}
func (c *_DiscoveryNATSRPCClient) RegisterServer(ctx context.Context, req *RegisterServerReq, opt ...natsrpc.CallOption) (*RegisterServerRsp, error) {
rep := &RegisterServerRsp{}
err := c.c.Request(ctx, "RegisterServer", req, rep, opt...)
return rep, err
}
func (c *_DiscoveryNATSRPCClient) CancelServer(ctx context.Context, req *CancelServerReq, opt ...natsrpc.CallOption) (*NullMsg, error) {
rep := &NullMsg{}
err := c.c.Request(ctx, "CancelServer", req, rep, opt...)
return rep, err
}
func (c *_DiscoveryNATSRPCClient) KeepaliveServer(ctx context.Context, req *KeepaliveServerReq, opt ...natsrpc.CallOption) (*NullMsg, error) {
rep := &NullMsg{}
err := c.c.Request(ctx, "KeepaliveServer", req, rep, opt...)
return rep, err
}
func (c *_DiscoveryNATSRPCClient) GetServerAppId(ctx context.Context, req *GetServerAppIdReq, opt ...natsrpc.CallOption) (*GetServerAppIdRsp, error) {
rep := &GetServerAppIdRsp{}
err := c.c.Request(ctx, "GetServerAppId", req, rep, opt...)
return rep, err
}
func (c *_DiscoveryNATSRPCClient) GetRegionEc2B(ctx context.Context, req *NullMsg, opt ...natsrpc.CallOption) (*RegionEc2B, error) {
rep := &RegionEc2B{}
err := c.c.Request(ctx, "GetRegionEc2B", req, rep, opt...)
return rep, err
}
func (c *_DiscoveryNATSRPCClient) GetGateServerAddr(ctx context.Context, req *GetGateServerAddrReq, opt ...natsrpc.CallOption) (*GateServerAddr, error) {
rep := &GateServerAddr{}
err := c.c.Request(ctx, "GetGateServerAddr", req, rep, opt...)
return rep, err
}
func (c *_DiscoveryNATSRPCClient) GetAllGateServerInfoList(ctx context.Context, req *NullMsg, opt ...natsrpc.CallOption) (*GateServerInfoList, error) {
rep := &GateServerInfoList{}
err := c.c.Request(ctx, "GetAllGateServerInfoList", req, rep, opt...)
return rep, err
}
func (c *_DiscoveryNATSRPCClient) GetMainGameServerAppId(ctx context.Context, req *NullMsg, opt ...natsrpc.CallOption) (*GetMainGameServerAppIdRsp, error) {
rep := &GetMainGameServerAppIdRsp{}
err := c.c.Request(ctx, "GetMainGameServerAppId", req, rep, opt...)
return rep, err
}

File diff suppressed because it is too large Load Diff

View File

@@ -25,7 +25,7 @@ func NewHandle(messageQueue *mq.MessageQueue) (r *Handle) {
}
func (h *Handle) run() {
for i := 0; i < 4; i++ {
for i := 0; i < 1; i++ {
go func() {
for {
netMsg := <-h.messageQueue.GetNetMsg()