diff --git a/logic/service/player/pack.go b/logic/service/player/pack.go index c9280a50e..ec9ef09ee 100644 --- a/logic/service/player/pack.go +++ b/logic/service/player/pack.go @@ -102,20 +102,11 @@ func (cd *ClientData) OnEvent(data common.TomeeHeader) { // 消费消息的协程:处理业务逻辑,不阻塞 eventloop func (cd *ClientData) consumeMsg() { - for header := range cd.MsgChan { - // 执行原有的 OnEvent 逻辑 - cd.handleBizLogic(header) - } -} - -// 重写 -// 遍历结构体方法并执行RECV_cmd -func (h *ClientData) handleBizLogic(data common.TomeeHeader) { defer func() { if err := recover(); err != nil { // 恢复 panic,err 为 panic 错误值 // 1. 打印错误信息 - if h.Player != nil { - if h.Player.Info != nil { + if cd.Player != nil { + if cd.Player.Info != nil { cool.Logger.Error(context.TODO(), "panic 错误:", cool.Config.ServerInfo.OnlineID, h.Player.Info.UserID, err) } else { cool.Logger.Error(context.TODO(), "panic 错误:", cool.Config.ServerInfo.OnlineID, err) @@ -128,6 +119,16 @@ func (h *ClientData) handleBizLogic(data common.TomeeHeader) { } }() + for header := range cd.MsgChan { + // 执行原有的 OnEvent 逻辑 + cd.handleBizLogic(header) + } +} + +// 重写 +// 遍历结构体方法并执行RECV_cmd +func (h *ClientData) handleBizLogic(data common.TomeeHeader) { + if data.CMD > 1001 { if h.Player == nil {