From 22994b9cd6df81a4ba2950e4cab04c073729cc6f Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 11 Mar 2026 17:08:00 +0800 Subject: [PATCH] =?UTF-8?q?message=20=E4=BF=A1=E6=81=AF=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/message_mgr.go | 59 +++++++++++++++++++--------------- src/server/game/mod/msg/Msg.go | 2 +- 2 files changed, 34 insertions(+), 27 deletions(-) diff --git a/src/server/game/message_mgr.go b/src/server/game/message_mgr.go index 4bfb0285..90c6fab4 100644 --- a/src/server/game/message_mgr.go +++ b/src/server/game/message_mgr.go @@ -100,35 +100,42 @@ func (m *MessageMgr) MessageMgrInit() { m.NodeRegister() m.CenterRegister() FixBug() + log.Debug("MessageMgr initialized successfully") } func FixBug() { - // messageMgrData := getMessageData() - // // 先更新 PlayerList(需要加锁) - // messageMgrData.mu.Lock() - // defer messageMgrData.mu.Unlock() - // now := GoUtil.Now() - // for k, v := range messageMgrData.MessageList { - // if k < 100000 { - // delete(messageMgrData.MessageList, k) - // continue - // } - // isLose := CheckPlayerLose(int(k)) - // // 反向遍历以安全删除元素 - // for i := len(v.Messages) - 1; i >= 0; i-- { - // if v.Messages[i].Type == msg.HANDLE_TYPE_CHAMPSHIP_NOTIFY || (v.Messages[i].End != 0 && v.Messages[i].End < now) { - // // 删除消息 - // v.Messages = append(v.Messages[:i], v.Messages[i+1:]...) - // } - // if isLose && v.Messages[i].Type == msg.HANDLE_TYPE_CHAMPSHIP_RESULT { - // // 删除消息 - // v.Messages = append(v.Messages[:i], v.Messages[i+1:]...) - // } - // } - // if len(v.Messages) == 0 { - // delete(messageMgrData.MessageList, k) - // } - // } + messageMgrData := getMessageData() + // 先更新 PlayerList(需要加锁) + messageMgrData.mu.Lock() + defer messageMgrData.mu.Unlock() + now := GoUtil.Now() + for k, v := range messageMgrData.MessageList { + if k < 100000 { + delete(messageMgrData.MessageList, k) + continue + } + newMsgList := make([]*msg.Msg, 0, len(v.Messages)) + // 反向遍历以安全删除元素 + for _, message := range v.Messages { + if message == nil { + continue + } + if message.Type == msg.HADNLE_TYPE_AGREE || message.Type == msg.HANDLE_TYPE_DEL { + newMsgList = append(newMsgList, message) + continue + } + if message.End < now { + log.Debug("delete message %v", message) + continue + } + newMsgList = append(newMsgList, message) + } + v.Messages = newMsgList + if len(v.Messages) == 0 { + log.Debug("delete messagelist uid:%d", k) + delete(messageMgrData.MessageList, k) + } + } } // 注册处理器 diff --git a/src/server/game/mod/msg/Msg.go b/src/server/game/mod/msg/Msg.go index 70c172c3..3d447193 100644 --- a/src/server/game/mod/msg/Msg.go +++ b/src/server/game/mod/msg/Msg.go @@ -204,7 +204,7 @@ func (m *Msg) Reply(data interface{}) *Msg { func (m *Msg) String() string { typeStr := "default" handleTypeStr := formatHandleType(m.HandleType) - if m.HandleType == HANDLE_MOD_REPLY_PLAYER_MSG { + if m.HandleType == HANDLE_MOD_PLAYER_MSG { typeStr = formatType(m.Type) } return fmt.Sprintf("Msg{Type:%s, To:%d, From:%d, SendT:%d, End:%d, Id:%d, HandleType:%s, Items:%+v, Extra:%+v}",