feat(logic): 优化命令行参数解析和服务器初始化逻辑

- 将命令行参数解析移至 controller 包的 init 函数中
- 添加 PortBL 配置项判断,实现 login 服务器的条件初始化
- 移除 main 函数中的重复代码
- 在 login 服务器中启用 pprof 性能分析工具
- 删除未使用的 Start 函数和相关代码
This commit is contained in:
2025-07-06 11:38:02 +08:00
parent 542fafbf34
commit c16eed6fe0
4 changed files with 18 additions and 41 deletions

View File

@@ -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 {

View File

@@ -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())
}

View File

@@ -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")

View File

@@ -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)
}