From a22287d987c5fb592de0688d6fb5633c1a18d537 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 17:16:54 +0800 Subject: [PATCH] =?UTF-8?q?```=20fix(network):=20=E4=BF=AE=E5=A4=8D=20rpc?= =?UTF-8?q?=20=E5=92=8C=20websocket=20=E5=9C=B0=E5=9D=80=E6=8B=BC=E6=8E=A5?= =?UTF-8?q?=E7=BC=BA=E5=B0=91=E5=86=92=E5=8F=B7=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复了 jsonrpc 服务启动时监听地址缺少冒号导致解析错误的问题, 同时修正 websocket 客户端连接地址的拼接逻辑。此外,注释掉了一处日志输出, 并调整了端口检测函数的参数类型以匹配实际配置结构。 ``` --- .github/workflows/logic_CI.yml | 4 ++-- common/rpc/rpc.go | 6 +++--- common/socket/ServerEvent.go | 2 +- logic/server.go | 6 +++--- logic/service/fight/node/fight.go | 1 + 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/.github/workflows/logic_CI.yml b/.github/workflows/logic_CI.yml index 654d5ab0..8b3103fb 100644 --- a/.github/workflows/logic_CI.yml +++ b/.github/workflows/logic_CI.yml @@ -58,8 +58,8 @@ jobs: uses: easingthemes/ssh-deploy@main env: SSH_PRIVATE_KEY: ${{ secrets.BLAZING }} - REMOTE_HOST: "122.10.117.123" - REMOTE_PORT: 41967 + REMOTE_HOST: "125.208.20.223" + REMOTE_PORT: 22916 REMOTE_USER: "root" SOURCE: "logic_${{ needs.prepare-version.outputs.build_version }}" # 只指定可执行文件作为源 TARGET: "/home/" diff --git a/common/rpc/rpc.go b/common/rpc/rpc.go index 8271d663..7dd48b83 100644 --- a/common/rpc/rpc.go +++ b/common/rpc/rpc.go @@ -68,12 +68,12 @@ func StartServer() { rpcServer := jsonrpc.NewServer(jsonrpc.WithReverseClient[ClientHandler]("")) rpcServer.Register("", &ServerHandler{}) - cool.Loger.Debug(context.Background(), "jsonrpc server start") + cool.Loger.Debug(context.Background(), "jsonrpc server start", rpcport) // go time.AfterFunc(3000, func() { // testjsonrpc() // }) - err := http.ListenAndServe("0.0.0.0"+rpcport, rpcServer) + err := http.ListenAndServe("0.0.0.0:"+rpcport, rpcServer) cool.Loger.Debug(context.Background(), "jsonrpc server fail", err) } @@ -88,7 +88,7 @@ func StartClient(id, port uint16, callback any) *struct { var rpcaddr, _ = service.NewBaseSysParamService().DataByKey(context.Background(), "server_ip") closer1, err := jsonrpc.NewMergeClient(context.Background(), - "ws://"+rpcaddr+rpcport, "", []interface{}{ + "ws://"+rpcaddr+":"+rpcport, "", []interface{}{ &RPCClient, }, nil, jsonrpc.WithClientHandler("", callback), jsonrpc.WithReconnFun(func() { RPCClient.RegisterLogic(id, port) }), diff --git a/common/socket/ServerEvent.go b/common/socket/ServerEvent.go index 50288073..24774715 100644 --- a/common/socket/ServerEvent.go +++ b/common/socket/ServerEvent.go @@ -59,7 +59,7 @@ func (s *Server) OnTick() (delay time.Duration, action gnet.Action) { func (s *Server) OnBoot(eng gnet.Engine) gnet.Action { s.eng = eng - cool.Loger.Infof(context.Background(), " server is listening on %s\n", s.addr) + // cool.Loger.Infof(context.Background(), " server is listening on %s\n", s.addr) return gnet.None } diff --git a/logic/server.go b/logic/server.go index f6d150a6..13a4686c 100644 --- a/logic/server.go +++ b/logic/server.go @@ -24,7 +24,7 @@ const ( ) var defaultPort = gconv.Int(cool.Config.Port) //读入默认的端口 -var candidatePorts = []int{defaultPort} +var candidatePorts = cool.Config.GamePort // determinePort 确定服务器使用的端口 func determinePort(serverid uint16) (int, error) { @@ -38,7 +38,7 @@ func determinePort(serverid uint16) (int, error) { // 遍历指定的端口列表 for _, port := range candidatePorts { if isPortAvailable(port) { - return port, nil + return int(port), nil } log.Printf("Port %d is not available, checking next...", port) } @@ -49,7 +49,7 @@ func determinePort(serverid uint16) (int, error) { } // isPortAvailable 检查端口是否可用 -func isPortAvailable(port int) bool { +func isPortAvailable(port uint64) bool { address := fmt.Sprintf(":%d", port) listener, err := net.Listen("tcp", address) if err != nil { diff --git a/logic/service/fight/node/fight.go b/logic/service/fight/node/fight.go index 4f16faf1..559733c0 100644 --- a/logic/service/fight/node/fight.go +++ b/logic/service/fight/node/fight.go @@ -7,6 +7,7 @@ import "blazing/logic/service/fight/input" func (e *EffectNode) Fight_Start(ctx input.Ctx) bool { //战斗开始应该注入魂印 //panic("not implemented") // TODO: Implement + return true } func (e *EffectNode) PreBattleEnd(ctx input.Ctx) bool { panic("not implemented") // TODO: Implement