```
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:
@@ -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()
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user