"refactor(socket): 重构TomeeHeader结构,新增Ret方法并优化控制器返回逻辑"

This commit is contained in:
1
2025-07-15 21:11:56 +00:00
parent e493a2b970
commit 280cd58017
6 changed files with 61 additions and 29 deletions

View File

@@ -0,0 +1,5 @@
package entity
type Blazingservice interface {
Ret() []byte
}

View File

@@ -21,6 +21,7 @@ type TomeeHeader struct {
Result uint32 `json:"result"`
Data []byte `json:"data" struc:"skip"` //组包忽略此字段// struc:"[0]pad"
Return []byte `struc:"[0]pad"` //返回记录
}
func NewTomeeHeader() *TomeeHeader {
@@ -113,6 +114,11 @@ func (h *TomeeHeader) Pack(data any) []byte { //组包
return by.Bytes()
}
func (h *TomeeHeader) Ret() []byte { //默认返回方法
return h.Return
}
// MergeBytes 将多个字节数组合并为一个

View File

@@ -196,9 +196,25 @@ func Recv(c gnet.Conn, data handler.TomeeHeader) {
params = append(params, ptrValue1, reflect.ValueOf(c))
}
ret := cmdlister.Call(params)
cmdlister.Call(params)
r := entity.Conn{c}
r.SendPack(ret[0].Interface().([]byte))
r := entity.Conn{MainConn: c}
// // 遍历结构体字段
// // fmt.Printf("结构体 %s 的字段信息:\n", t.Name())
// for i := 0; i < ptrValue1.Type().NumField(); i++ {
// field := ptrValue1.Type().Field(i)
// if field.Name == "Ret" { //判断Ret
// }
// }
t, ok := ptrValue1.Interface().(entity.Blazingservice)
if ok {
r.SendPack(t.Ret())
t.Ret()
}
//r.SendPack(ret[0].Interface().([]byte))
}

View File

@@ -2,21 +2,14 @@ package controller
import (
"blazing/logic/service/server"
"fmt"
"github.com/panjf2000/gnet/v2"
)
// 处理命令: 105
func (h Controller) GetServer(data server.SidInfo, c gnet.Conn) []byte { //这个时候player应该是空的
//fmt.Println(data.Sid)
ret := server.NewCommendSvrInfo()
ret.ServerList = server.GetServerInfoList()
tt := data.Head.Pack(ret)
//fmt.Println(hex.EncodeToString(tt))
// c.Write(tt)
return tt
func (h Controller) GetServer(data server.SidInfo, c gnet.Conn) { //这个时候player应该是空的
t := data.Init() //初始化方法,然后可以返回默认返回值修改
fmt.Println(t)
//return //TODO 这里待实现改成接口调用Ret方法
}

View File

@@ -1,6 +1,7 @@
package server
import (
"blazing/common/socket/handler"
"blazing/cool"
"blazing/modules/base/service"
"blazing/modules/blazing/model"
@@ -8,8 +9,27 @@ import (
"github.com/butoften/array"
)
//var _ entity.Blazingservice = (*SidInfo)(nil)
type SidInfo struct { //这里直接使用组合来实现将传入的原始头部数据和结构体参数序列化
Head handler.TomeeHeader `cmd:"105" struc:"[0]pad"` //玩家登录
Sid []byte `struc:"[20]byte"` // 登录会话ID固定长度16字节
ret []byte `struc:"[0]pad"`
// NotLogin uint32 `error="10001"|struc:"[0]pad"` //返回错误码 ,不序列化,仅作为错误码
// ErrorPassWord uint32 `struc:"[0]pad"`
}
func (s SidInfo) Init() *commendSvrInfo { //默认返回方法
r := newCommendSvrInfo()
r.ServerList = GetServerInfoList()
s.Head.Return = s.Head.Pack(r) //这里保存一下,用来给调用
return r
}
// CommendSvrInfo 初始连接请求信息结构体
type CommendSvrInfo struct {
type commendSvrInfo struct {
//Handler handler.TomeeHeader //` struc:"[0]pad"` //消息头 ,这里为传入的头部数据,遍历此头部实现解析CommendSvrInfo
MaxOnlineID uint32 `struc:"sizeof=ServerList"` // 最大连接数
IsVip uint32 // 建议为0
@@ -21,8 +41,11 @@ type CommendSvrInfo struct {
BlackInfo []BlackInfo // 黑名单id
}
func NewCommendSvrInfo() *CommendSvrInfo {
return &CommendSvrInfo{
// NewCommendSvrInfo 创建并返回一个新的 commendSvrInfo 结构体实例
// 返回的实例包含初始化的 ServerList、FriendInfo 和 BlackInfo 切片
// IsVip 和 ServerInfoLen 字段被初始化为 0
func newCommendSvrInfo() *commendSvrInfo {
return &commendSvrInfo{
// Handler: handler.TomeeHeader{},
// MaxOnlineID: 100,
IsVip: 0,

View File

@@ -1,11 +0,0 @@
package server
import "blazing/common/socket/handler"
type SidInfo struct { //这里直接使用组合来实现将传入的原始头部数据和结构体参数序列化
Head handler.TomeeHeader `cmd:"105" struc:"[0]pad"` //玩家登录
Sid []byte `struc:"[20]byte"` // 登录会话ID固定长度16字节
// NotLogin uint32 `error="10001"|struc:"[0]pad"` //返回错误码 ,不序列化,仅作为错误码
// ErrorPassWord uint32 `struc:"[0]pad"`
}