refactor(player): 修复消费消息协程中的变量引用错误

修复了 consumeMsg 方法中错误引用变量的问题,将 handleBizLogic 方法中的
变量引用从 'h' 更正为 'cd',确保正确的上下文访问。

同时调整了代码结构,将消息循环处理逻辑移至正确位置,
保证 panic 恢复机制能够正确捕获异常信息。
```
This commit is contained in:
昔念
2026-03-04 01:38:12 +08:00
parent 3ddecce241
commit 536a0c45c8

View File

@@ -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 { // 恢复 panicerr 为 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 {