From 485b22a3f7074606d7e71681eef9b10b7896a144 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <1@72wo.cn> Date: Wed, 8 Oct 2025 16:54:03 +0800 Subject: [PATCH] =?UTF-8?q?```=20feat(config):=20=E6=B7=BB=E5=8A=A0RPC?= =?UTF-8?q?=E7=AB=AF=E5=8F=A3=E5=92=8C=E6=B8=B8=E6=88=8F=E7=AB=AF=E5=8F=A3?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在配置结构体中新增了RPC端口和游戏端口字段,并更新了配置文件以支持多端口监听。同时, 调整了服务器端口选择逻辑,优先使用默认端口,不再生成随机端口。 refactor(server): 移除随机端口生成逻辑 删除了随机端口生成及相关依赖,端口选择改为从预定义列表中查找可用端口,提高端口分配的 可控性和稳定性。 fix(fight): 注释掉未实现的panic语句 为避免程序运行时因未实现逻辑导致崩溃,注释掉了Turn_Start和Fight_Start中的panic调用, 并添加了相关注释说明后续需实现的内容。 chore(config): 更新默认配置参数 更新了服务器地址、端口、数据库连接信息及Redis配置,确保开发环境配置正确。 ``` --- common/cool/coolconfig/config.go | 8 ++++++-- common/rpc/rpc.go | 3 ++- logic/server.go | 24 +++++++++++------------- logic/service/fight/node/Turn.go | 2 +- logic/service/fight/node/fight.go | 3 ++- manifest/config/config.yaml | 27 +++++++++++++++------------ 6 files changed, 37 insertions(+), 30 deletions(-) diff --git a/common/cool/coolconfig/config.go b/common/cool/coolconfig/config.go index 6d7be6cdd..b4729de06 100644 --- a/common/cool/coolconfig/config.go +++ b/common/cool/coolconfig/config.go @@ -9,7 +9,9 @@ type sConfig struct { File *file `json:"file,omitempty"` // 文件上传配置 Name string `json:"name"` // 项目名称 Port string `json:"port"` - PortBL uint16 `json:"port_bl"` + PortBL uint16 `json:"port_bl"` //这个是命令行输入的参数 + RPC uint16 //rpc端口 + GamePort []uint64 } // OSS相关配置 @@ -37,7 +39,9 @@ func newConfig() *sConfig { Name: GetCfgWithDefault(ctx, "server.name", g.NewVar("")).String(), Eps: GetCfgWithDefault(ctx, "blazing.eps", g.NewVar(false)).Bool(), Port: string(GetCfgWithDefault(ctx, "server.port", g.NewVar("8080")).String()), - //PortBL: string(GetCfgWithDefault(ctx, "blazing.port", g.NewVar("8080")).String()), + RPC: GetCfgWithDefault(ctx, "server.rpc", g.NewVar("8080")).Uint16(), + GamePort: GetCfgWithDefault(ctx, "server.game", g.NewVar("8080")).Uint64s(), + File: &file{ Mode: GetCfgWithDefault(ctx, "blazing.file.mode", g.NewVar("none")).String(), Domain: GetCfgWithDefault(ctx, "blazing.file.domain", g.NewVar("http://127.0.0.1:8300")).String(), diff --git a/common/rpc/rpc.go b/common/rpc/rpc.go index 7fa8b5e82..8271d6633 100644 --- a/common/rpc/rpc.go +++ b/common/rpc/rpc.go @@ -10,9 +10,10 @@ import ( "net/http" "github.com/filecoin-project/go-jsonrpc" + "github.com/gogf/gf/v2/util/gconv" ) -const rpcport = ":40000" +var rpcport = gconv.String(cool.Config.RPC) var clientmap = make(map[uint16]*ClientHandler) //客户端map var clientidmap = make(map[uint16]uint16) //客户端map diff --git a/logic/server.go b/logic/server.go index 3973ad69b..f6d150a62 100644 --- a/logic/server.go +++ b/logic/server.go @@ -12,9 +12,7 @@ import ( "fmt" "log" - "math/rand" "net" - "time" "github.com/gogf/gf/v2/util/gconv" ) @@ -26,28 +24,28 @@ const ( ) var defaultPort = gconv.Int(cool.Config.Port) //读入默认的端口 +var candidatePorts = []int{defaultPort} // determinePort 确定服务器使用的端口 func determinePort(serverid uint16) (int, error) { - rand.Seed(time.Now().UnixNano()) + // 服务器ID为0时使用默认端口 if serverid == 0 { return defaultPort, nil } + // 尝试从指定端口列表中找可用端口,最多尝试maxPortRetryCount轮 for i := 0; i < maxPortRetryCount; i++ { - port := generateRandomPort() - if isPortAvailable(port) { - return port, nil + // 遍历指定的端口列表 + for _, port := range candidatePorts { + if isPortAvailable(port) { + return port, nil + } + log.Printf("Port %d is not available, checking next...", port) } - log.Printf("Port %d is not available, retrying...", port) + log.Printf("All candidate ports are in use, retrying round %d...", i+1) } - return 0, fmt.Errorf("failed to find available port after %d attempts", maxPortRetryCount) -} - -// generateRandomPort 生成指定范围内的随机端口 -func generateRandomPort() int { - return minRandomPort + rand.Intn(maxRandomPort-minRandomPort) + return 0, fmt.Errorf("failed to find available port after %d rounds of checking", maxPortRetryCount) } // isPortAvailable 检查端口是否可用 diff --git a/logic/service/fight/node/Turn.go b/logic/service/fight/node/Turn.go index aa1486601..35ad7ec77 100644 --- a/logic/service/fight/node/Turn.go +++ b/logic/service/fight/node/Turn.go @@ -10,7 +10,7 @@ func (e *EffectNode) Compare_Pre(fattack, sattack *action.SelectSkillAction) boo return false } func (e *EffectNode) Turn_Start(ctx input.Ctx) { - panic("not implemented") // TODO: Implement + //panic("not implemented") // TODO: Implement } func (e *EffectNode) Turn_End(ctx input.Ctx) { diff --git a/logic/service/fight/node/fight.go b/logic/service/fight/node/fight.go index 130269c2a..4f16faf13 100644 --- a/logic/service/fight/node/fight.go +++ b/logic/service/fight/node/fight.go @@ -5,7 +5,8 @@ import "blazing/logic/service/fight/input" // 回合结束一次性effect清楚掉 func (e *EffectNode) Fight_Start(ctx input.Ctx) bool { - panic("not implemented") // TODO: Implement + //战斗开始应该注入魂印 + //panic("not implemented") // TODO: Implement } func (e *EffectNode) PreBattleEnd(ctx input.Ctx) bool { panic("not implemented") // TODO: Implement diff --git a/manifest/config/config.yaml b/manifest/config/config.yaml index 663421ab7..4bce7efcf 100644 --- a/manifest/config/config.yaml +++ b/manifest/config/config.yaml @@ -1,14 +1,17 @@ server: name: "blazing server" - address: ":8080" #前台服务器地址 - port: 12345 + address: ":59480" #前台服务器地址 + port: 53388 #后台服务器端口 + rpc: 56409 #rpc服务端口 + game: [55407,50876,52482] openapiPath: "/api.json" swaggerPath: "/swagger" - clientMaxBodySize: 104857600 # 100MB in bytes 100*1024*1024 - # 平滑重启特性 - graceful: true # 是否开启平滑重启特性,开启时将会在本地增加10000的本地TCP端口用于进程间通信。默认false - gracefulTimeout: 2 # 父进程在平滑重启后多少秒退出,默认2秒。若请求耗时大于该值,可能会导致请求中断 - gracefulShutdownTimeout: 5 # 关闭Server时如果存在正在执行的HTTP请求,Server等待多少秒才执行强行关闭 + clientMaxBodySize: + 104857600 # 100MB in bytes 100*1024*1024 + # 平滑重启特性 + graceful: true # 是否开启平滑重启特性,开启时将会在本地增加10000的本地TCP端口用于进程间通信。默认false + gracefulTimeout: 2 # 父进程在平滑重启后多少秒退出,默认2秒。若请求耗时大于该值,可能会导致请求中断 + gracefulShutdownTimeout: 5 # 关闭Server时如果存在正在执行的HTTP请求,Server等待多少秒才执行强行关闭 logger: level: "all" stdout: true @@ -16,10 +19,10 @@ logger: database: default: type: "pgsql" - host: "122.10.117.123" - port: "5432" + host: "125.208.20.223" + port: "55669" user: "bl" - pass: "WYrM5ZYFnX7Y8PRC" + pass: "4DD4z3T2Zh8rx8Yd" name: "bl" debug: true timezone: "Asia/Shanghai" @@ -50,9 +53,9 @@ database: # Redis 配置示例 redis: cool: - address: "122.10.117.123:6379" + address: "125.208.20.223:57095" db: 0 - pass: "redis_PPn5iT" + pass: "redis_wQ22jj" blazing: autoMigrate: true