refactor(socket): 统一使用 gnet.Conn 替代自定义 Conn 结构体

- 将 logic/controller 和 logic/service/player 中的 *player.Conn 替换为 gnet.Conn
- 移除 player.Conn 结构体及相关封装逻辑
- 调整 SendPack 方法至 Player 实体,直接操作 gnet.Conn 发送数据
- 增加 Mu 锁保护并发写入,确保 WebSocket 和 TCP 连接安全性
- 更新 ServerEvent.go 中跨域标记设置位置
```
This commit is contained in:
2025-10-14 03:07:55 +08:00
parent 1cbdb8f22a
commit 600fc29cbd
10 changed files with 58 additions and 63 deletions

View File

@@ -17,6 +17,7 @@ import (
"github.com/gogf/gf/v2/os/glog"
"github.com/gogf/gf/v2/util/gconv"
"github.com/lunixbochs/struc"
"github.com/panjf2000/gnet/v2"
)
var Maincontroller = NewController() //注入service
@@ -127,7 +128,7 @@ func getcmd(t reflect.Type) []uint32 {
}
// 遍历结构体方法并执行RECV_cmd
func Recv(c *player.Conn, data player.TomeeHeader) {
func Recv(c gnet.Conn, data player.TomeeHeader) {
cmdlister, ok := cool.CmdCache.Load(data.CMD)
if !ok {
@@ -188,14 +189,17 @@ func Recv(c *player.Conn, data player.TomeeHeader) {
if ok && aa != 0 { //这里实现回复错误包
cool.Loger.Error(context.Background(), aa.Code())
c.SendPack(data.Pack(nil))
c.Context().(*player.ClientData).Mu.Lock()
c.Write(data.Pack(nil))
c.Context().(*player.ClientData).Mu.Unlock()
return
}
data.Version = "7"
//glog.Debug(context.Background(), data.CMD, "回复数据")
c.SendPack(data.Pack(ret[0].Interface()))
c.Context().(*player.ClientData).Mu.Lock()
c.Write(data.Pack(ret[0].Interface()))
c.Context().(*player.ClientData).Mu.Unlock()
}