refactor(pack): 重构组包逻辑

- 移除 common/core/pack.go 文件
- 在 TomeeHeader 结构体中添加 Pack 方法实现组包功能
- 更新 Player 结构体和相关方法,使用 Conn 包装 gnet.Conn
- 修改控制器和服务中的组包调用,使用新的 Pack 方法
- 优化部分代码结构,提高可维护性
This commit is contained in:
2025-07-14 11:07:13 +08:00
parent 2d012b25dc
commit aeb0d4090e
8 changed files with 96 additions and 95 deletions

View File

@@ -0,0 +1,32 @@
package entity
import (
"fmt"
"github.com/gobwas/ws"
"github.com/gobwas/ws/wsutil"
"github.com/panjf2000/gnet/v2"
"github.com/panjf2000/gnet/v2/pkg/logging"
)
type Conn struct {
MainConn gnet.Conn `struc:"[0]pad"` //TODO 不序列化,,序列化下面的作为blob存数据库
}
func (c *Conn) SendPack(bytes []byte) error {
if c.MainConn.Context().(*ClientData).Getwsmsg().Upgraded {
// This is the echo server
err := wsutil.WriteServerMessage(c.MainConn, ws.OpBinary, bytes)
if err != nil {
logging.Infof("conn[%v] [err=%v]", c.MainConn.RemoteAddr().String(), err.Error())
return err
}
} else {
_, err := c.MainConn.Write(bytes)
if err != nil {
fmt.Println(err)
}
}
return nil
}

View File

@@ -7,9 +7,9 @@ import (
)
type Player struct {
MainConn gnet.Conn `struc:"[0]pad"` //TODO 不序列化,,序列化下面的作为blob存数据库
UserID uint32 //用户ID
IsLogin bool //是否登录 //TODO 待实现登录包为第一个包,后续再发其他的包
MainConn Conn
UserID uint32 //用户ID
IsLogin bool //是否登录 //TODO 待实现登录包为第一个包,后续再发其他的包
}
@@ -22,9 +22,9 @@ func WithUserID(userID uint32) PlayerOption {
p.UserID = userID
}
}
func WithConn(Conn gnet.Conn) PlayerOption {
func WithConn(c gnet.Conn) PlayerOption {
return func(p *Player) {
p.MainConn = Conn
p.MainConn = Conn{MainConn: c}
}
}
@@ -42,7 +42,7 @@ func (p *Player) GetUserID() uint32 {
}
func (p *Player) SendPack(b []byte) error {
_, err := p.MainConn.Write(b)
err := p.MainConn.SendPack(b)
return err
}