```
refactor(player): 修复消费消息协程中的变量引用错误 修复了 consumeMsg 方法中错误引用变量的问题,将 handleBizLogic 方法中的 变量引用从 'h' 更正为 'cd',确保正确的上下文访问。 同时调整了代码结构,将消息循环处理逻辑移至正确位置, 保证 panic 恢复机制能够正确捕获异常信息。 ```
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user