From c16eed6fe0e823671e395d0039cb236c2b262f36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <1@72wo.cn> Date: Sun, 6 Jul 2025 11:38:02 +0800 Subject: [PATCH] =?UTF-8?q?feat(logic):=20=E4=BC=98=E5=8C=96=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=E8=A1=8C=E5=8F=82=E6=95=B0=E8=A7=A3=E6=9E=90=E5=92=8C?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=99=A8=E5=88=9D=E5=A7=8B=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将命令行参数解析移至 controller 包的 init 函数中 - 添加 PortBL 配置项判断,实现 login 服务器的条件初始化 - 移除 main 函数中的重复代码 - 在 login 服务器中启用 pprof 性能分析工具 - 删除未使用的 Start 函数和相关代码 --- logic/controller/controller.go | 24 +++++++++++++----------- logic/main.go | 4 +--- login/internal/cmd/cmd.go | 5 ++++- login/main.go | 26 -------------------------- 4 files changed, 18 insertions(+), 41 deletions(-) diff --git a/logic/controller/controller.go b/logic/controller/controller.go index 474398566..71b446f52 100644 --- a/logic/controller/controller.go +++ b/logic/controller/controller.go @@ -5,6 +5,7 @@ import ( "blazing/common/data/entity" "blazing/common/socket/cmd" "blazing/common/socket/handler" + "blazing/cool" "blazing/logic/service" "bytes" @@ -12,6 +13,7 @@ import ( "fmt" "reflect" + "github.com/gogf/gf/v2/os/gcmd" "github.com/gogf/gf/v2/os/glog" "github.com/gogf/gf/v2/util/gconv" "github.com/lunixbochs/struc" @@ -37,7 +39,8 @@ func parseCmd[T any](a T, data []byte) T { } func init() { //默认初始化扫描 - + // 解析命令行参数 + cool.Config.PortBL = gcmd.GetOpt("port", "1").Uint32() // 获取对象的反射值和类型 value := reflect.ValueOf(maincontroller) @@ -54,23 +57,21 @@ func init() { //默认初始化扫描 methodValue := value.MethodByName(method.Name) methodValue.Type().NumIn() var func_cmd cmd.EnumCommandID - //params := []reflect.Value{} - //fmt.Println(methodValue.Type().NumIn()) - // for i := 0; i < methodValue.Type().NumIn(); i++ { - - // ttt := methodValue.Type().In(i) - - // func_cmd = getcmd(ttt) - - // } - // /ttt := methodValue.Type().In(0) func_cmd = getcmd(methodValue.Type().In(0)) if !cmd.Isexist(cmd.CommandID, cmd.EnumCommandID(func_cmd)) { fmt.Println("ID方法存在cmd未注册", func_cmd) } + if cool.Config.PortBL == 0 && func_cmd > 1000 { //判断login服务器 + break + } + + if cool.Config.PortBL != 0 && func_cmd < 1000 { //判断login服务器 + continue + + } // fmt.Println(methodValue.Interface().(func(gnet.Conn, handler.TomeeHeader))) _, ok := core.Maincmdcache.LoadOrStore(func_cmd, methodValue) //TODO 待实现对不同用户初始化方法以取消全局cmdcache @@ -79,6 +80,7 @@ func init() { //默认初始化扫描 } } } + func getcmd(t reflect.Type) cmd.EnumCommandID { // 处理指针类型 if t.Kind() == reflect.Ptr { diff --git a/logic/main.go b/logic/main.go index 15c63f7dc..fd750e02e 100644 --- a/logic/main.go +++ b/logic/main.go @@ -10,7 +10,6 @@ import ( _ "blazing/contrib/drivers/pgsql" - "github.com/gogf/gf/v2/os/gcmd" "github.com/gogf/gf/v2/util/gconv" "blazing/common/socket" @@ -30,8 +29,7 @@ func signalHandlerForMain(sig os.Signal) { } func main() { - // 解析命令行参数 - cool.Config.PortBL = gcmd.GetOpt("port", "1").Uint32() + if cool.IsRedisMode { go cool.ListenFunc(gctx.New()) } diff --git a/login/internal/cmd/cmd.go b/login/internal/cmd/cmd.go index a008bbcf3..73efc1c12 100644 --- a/login/internal/cmd/cmd.go +++ b/login/internal/cmd/cmd.go @@ -2,6 +2,7 @@ package cmd import ( "context" + "runtime" "blazing/cool" @@ -25,7 +26,9 @@ var ( s := g.Server() s.SetServerAgent(cool.Config.Name) - + runtime.SetMutexProfileFraction(1) // (非必需)开启对锁调用的跟踪 + runtime.SetBlockProfileRate(1) // (非必需)开启对阻塞操作的跟踪 + s.EnablePProf() // 如果存在 data/cool-admin-vue/dist 目录,则设置为主目录 if gfile.IsDir("public") { s.SetServerRoot("public") diff --git a/login/main.go b/login/main.go index 52b8baace..bd9ddf180 100644 --- a/login/main.go +++ b/login/main.go @@ -2,17 +2,10 @@ package main import ( _ "github.com/gogf/gf/contrib/nosql/redis/v2" - "github.com/gogf/gf/v2/util/gconv" _ "blazing/contrib/drivers/pgsql" - "github.com/panjf2000/gnet/v2" - - "blazing/common/core" - "blazing/common/socket" - "blazing/common/socket/handler" _ "blazing/contrib/files/local" - "blazing/logic/service/login" // Minio,按需启用 // _ "blazing/contrib/files/minio" @@ -35,22 +28,3 @@ func main() { // go Start(cool.Config.Port) cmd.Main.Run(gctx.New()) } - -func Start(port string) { - - head := handler.NewTomeeHandler() - head.Callback = recv - socket.NewServer(socket.WithPort(gconv.Int(port)), socket.WithCORS(), socket.WithSocketHandler(head)).Start() -} - -func recv(c gnet.Conn, data handler.TomeeHeader) { - - ret := login.NewCommendSvrInfo() - - ret.ServerList = login.GetServerInfoList() - - tt := core.Pack(data, ret) - //fmt.Println(hex.EncodeToString(tt)) - c.Write(tt) - -}