This commit is contained in:
hahwu 2025-12-19 14:18:53 +08:00
parent bc6320d11d
commit d3fde0949a

View File

@ -74,8 +74,9 @@ func (m *MessageMgr) MessageMgrInit() {
m.Use(LoggingMiddleware())
m.Use(TimeoutMiddleware(5 * time.Second))
if conf.Server.ServerType == "center" {
m.RegisterHandler(msg.HANDLE_MOD_PLAYER_LOGIN, MessageHandlerFunc(PlayerLogin))
m.RegisterHandler(msg.HANDLE_MOD_PLAYER_MSG, MessageHandlerFunc(SendToPlayer))
m.RegisterHandler(msg.HANDLE_MOD_PLAYER_LOGIN, MessageHandlerFunc(PlayerLoginHandler))
m.RegisterHandler(msg.HANDLE_MOD_PLAYER_MSG, MessageHandlerFunc(CenterPlayerMsgHandler))
m.RegisterHandler(msg.HANDLE_MOD_COMSUME_MSG, MessageHandlerFunc(ComsumerMsgHandler))
} else {
m.RegisterHandler(msg.HANDLE_MOD_PLAYER_MSG, MessageHandlerFunc(PlayerMsgHandler))
}
@ -90,7 +91,7 @@ func getData() *MessageData {
return G_GameLogicPtr.MessageMgr.data.(*MessageData)
}
func PlayerLogin(data *msg.Msg) (interface{}, error) {
func PlayerLoginHandler(data *msg.Msg) (interface{}, error) {
// 关闭 Worker Pool
messageMgrData := getData()
messageMgrData.mu.Lock()
@ -105,7 +106,26 @@ func PlayerLogin(data *msg.Msg) (interface{}, error) {
return nil, nil
}
func SendToPlayer(data *msg.Msg) (interface{}, error) {
func ComsumerMsgHandler(data *msg.Msg) (interface{}, error) {
messageMgrData := getData()
Message, ok := messageMgrData.MessageList[int64(data.From)]
if !ok {
return nil, nil
}
Message.mu.Lock()
defer Message.mu.Unlock()
for i, msgItem := range Message.Messages {
if msgItem.Id == data.Id {
// 删除消息
Message.Messages = append(Message.Messages[:i], Message.Messages[i+1:]...)
log.Debug("[Middleware] Comsume message success type: %d, player id: %v", msgItem.Type, msgItem.From)
break
}
}
return nil, nil
}
func CenterPlayerMsgHandler(data *msg.Msg) (interface{}, error) {
PlayerId := int64(data.To)
messageMgrData := getData()
// 遍历消息列表,发送消息给在线玩家
@ -432,14 +452,12 @@ func SendMsgToNode(m *msg.Msg, node int) error {
func SendPlayerMsg(m *msg.Msg) error {
clone := m.Clone()
clone.UniKey = GoUtil.UniKey(fmt.Sprintf("%v,Player Msg", m))
clone.HandleType = msg.HANDLE_MOD_PLAYER_MSG
return mergeCluster.SendServerMsg(m, conf.Server.CenterNode)
}
func CallPlayerMsg(m *msg.Msg) (interface{}, error) {
clone := m.Clone()
clone.UniKey = GoUtil.UniKey(fmt.Sprintf("%v,Player Msg", m))
clone.HandleType = msg.HANDLE_MOD_PLAYER_MSG
return mergeCluster.CallServerMsg(m, conf.Server.CenterNode)
}