diff --git a/logic/service/player/SocketHandler_Tomee.go b/logic/service/player/SocketHandler_Tomee.go index b3d48b6a..2c2fcbfb 100644 --- a/logic/service/player/SocketHandler_Tomee.go +++ b/logic/service/player/SocketHandler_Tomee.go @@ -4,6 +4,7 @@ import ( "blazing/common/socket/errorcode" "blazing/common/utils/bytearray" "blazing/cool" + "sync" "context" @@ -13,6 +14,7 @@ import ( "github.com/gogf/gf/v2/os/glog" "github.com/lunixbochs/struc" + "github.com/panjf2000/gnet/v2" ) // TomeeHeader 结构体字段定义 @@ -190,3 +192,56 @@ func (h *ClientData) Recv(data TomeeHeader) { t.SendPack(data.Pack(ret[0].Interface())) } + +type ClientData struct { + IsCrossDomain bool //是否跨域过 + Player *Player //客户实体 + Mu sync.Mutex + ERROR_CONNUT int + Wsmsg *WsCodec + Conn gnet.Conn + SaveL sync.Once //保存锁 + + CloseChan chan struct{} +} + +func NewClientData(c gnet.Conn) *ClientData { + // 创建事件处理器 + + cd := ClientData{ + IsCrossDomain: false, + Player: nil, + Conn: c, + Wsmsg: &WsCodec{}, + } + return &cd + +} + +func (h *ClientData) OnEvent(v []byte) { + + header := TomeeHeader{} + + tempdata := bytearray.CreateByteArray(v) + header.Len, _ = tempdata.ReadUInt32() + header.Version, _ = tempdata.ReadByte() + header.CMD, _ = tempdata.ReadUInt32() + //header.CMD = cmd.EnumCommandID(_CMD) + header.UserID, _ = tempdata.ReadUInt32() + + header.Result, _ = tempdata.ReadUInt32() + header.Data = tempdata.BytesAvailable() + if header.CMD > 1001 { + if h.Conn.Context().(*ClientData).Player == nil { + cool.Loger.Error(context.TODO(), header.UserID, "账号未注册") + return + } + if h.Conn.Context().(*ClientData).Player.Info == nil { + cool.Loger.Error(context.TODO(), header.UserID, "未创建角色") + return + } + } + cool.Loger.Debug(context.TODO(), "接收数据", header.UserID, header.CMD) + h.Recv(header) + +} diff --git a/logic/service/player/wscodec.go b/logic/service/player/wscodec.go index ca39e8fa..b9b9a682 100644 --- a/logic/service/player/wscodec.go +++ b/logic/service/player/wscodec.go @@ -1,13 +1,9 @@ package player import ( - "blazing/common/utils/bytearray" - "blazing/cool" "bytes" - "context" "errors" "io" - "sync" "github.com/gobwas/ws" "github.com/gobwas/ws/wsutil" @@ -192,57 +188,4 @@ func (w *WsCodec) readWsMessages() (messages []wsutil.Message, err error) { } msgBuf.curHeader = nil } -} - -type ClientData struct { - IsCrossDomain bool //是否跨域过 - Player *Player //客户实体 - Mu sync.Mutex - ERROR_CONNUT int - Wsmsg *WsCodec - Conn gnet.Conn - SaveL sync.Once //保存锁 - - CloseChan chan struct{} -} - -func NewClientData(c gnet.Conn) *ClientData { - // 创建事件处理器 - - cd := ClientData{ - IsCrossDomain: false, - Player: nil, - Conn: c, - Wsmsg: &WsCodec{}, - } - return &cd - -} - -func (h *ClientData) OnEvent(v []byte) { - - header := TomeeHeader{} - - tempdata := bytearray.CreateByteArray(v) - header.Len, _ = tempdata.ReadUInt32() - header.Version, _ = tempdata.ReadByte() - header.CMD, _ = tempdata.ReadUInt32() - //header.CMD = cmd.EnumCommandID(_CMD) - header.UserID, _ = tempdata.ReadUInt32() - - header.Result, _ = tempdata.ReadUInt32() - header.Data = tempdata.BytesAvailable() - if header.CMD > 1001 { - if h.Conn.Context().(*ClientData).Player == nil { - cool.Loger.Error(context.TODO(), header.UserID, "账号未注册") - return - } - if h.Conn.Context().(*ClientData).Player.Info == nil { - cool.Loger.Error(context.TODO(), header.UserID, "未创建角色") - return - } - } - cool.Loger.Debug(context.TODO(), "接收数据", header.UserID, header.CMD) - h.Recv(header) - -} +} \ No newline at end of file