This commit is contained in:
hahwu 2025-12-22 16:06:08 +08:00
parent d3fde0949a
commit d16e2b3e25
4 changed files with 35 additions and 8 deletions

View File

@ -27,14 +27,14 @@ func HandShake(a *Agent) {
log.Debug("HandShake GobMarshal err %v", err) log.Debug("HandShake GobMarshal err %v", err)
return return
} }
// log.Debug("握手 server id :%d", conf.Server.ServerID) log.Debug("握手 server id :%d", conf.Server.ServerID)
a.WriteMsg(data) a.WriteMsg(data)
} }
// 握手回调 // 握手回调
func HandShakeRecv(a *Agent, m *msg.Msg) error { func HandShakeRecv(a *Agent, m *msg.Msg) error {
ServerId := m.From ServerId := m.From
// log.Debug("收到握手回复 ServerId %v", ServerId) log.Debug("收到握手回复 ServerId %v", ServerId)
a.ServerId = ServerId a.ServerId = ServerId
serverAgent.Store(ServerId, a) serverAgent.Store(ServerId, a)

View File

@ -5,6 +5,7 @@ import (
"server/game/mod/friend" "server/game/mod/friend"
limitedTimeEvent "server/game/mod/limited_time_event" limitedTimeEvent "server/game/mod/limited_time_event"
"server/game/mod/msg" "server/game/mod/msg"
"sync"
) )
type PlayerSimpleData struct { type PlayerSimpleData struct {
@ -49,6 +50,7 @@ type VarUserData struct {
Upvote int Upvote int
Chip int Chip int
Kiss int Kiss int
mu sync.Mutex
} }
type VarExpireData struct { type VarExpireData struct {

View File

@ -75,6 +75,7 @@ func (m *MessageMgr) MessageMgrInit() {
m.Use(TimeoutMiddleware(5 * time.Second)) m.Use(TimeoutMiddleware(5 * time.Second))
if conf.Server.ServerType == "center" { if conf.Server.ServerType == "center" {
m.RegisterHandler(msg.HANDLE_MOD_PLAYER_LOGIN, MessageHandlerFunc(PlayerLoginHandler)) m.RegisterHandler(msg.HANDLE_MOD_PLAYER_LOGIN, MessageHandlerFunc(PlayerLoginHandler))
m.RegisterHandler(msg.HANDLE_MDO_PLAYER_LOGOUT, MessageHandlerFunc(PlayerLogoutHandler))
m.RegisterHandler(msg.HANDLE_MOD_PLAYER_MSG, MessageHandlerFunc(CenterPlayerMsgHandler)) m.RegisterHandler(msg.HANDLE_MOD_PLAYER_MSG, MessageHandlerFunc(CenterPlayerMsgHandler))
m.RegisterHandler(msg.HANDLE_MOD_COMSUME_MSG, MessageHandlerFunc(ComsumerMsgHandler)) m.RegisterHandler(msg.HANDLE_MOD_COMSUME_MSG, MessageHandlerFunc(ComsumerMsgHandler))
} else { } else {
@ -102,13 +103,35 @@ func PlayerLoginHandler(data *msg.Msg) (interface{}, error) {
Messages: []*msg.Msg{}, Messages: []*msg.Msg{},
} }
} }
messageMgrData.PlayerList[int64(data.From)] = data.Extra.(int) log.Debug("[Middleware] Player login success player id: %v, node: %v", data.From, data.Extra.(int))
node := data.Extra.(int)
messageMgrData.PlayerList[int64(data.From)] = node
// 发送离线消息
messages := messageMgrData.MessageList[int64(data.From)]
messages.mu.Lock()
defer messages.mu.Unlock()
for _, message := range messages.Messages {
err := SendMsgToNode(message, node)
if err != nil {
log.Error("Failed to send message to player %d: %v", data.From, err)
}
}
return nil, nil
}
func PlayerLogoutHandler(data *msg.Msg) (interface{}, error) {
messageMgrData := getData()
messageMgrData.mu.Lock()
defer messageMgrData.mu.Unlock()
delete(messageMgrData.PlayerList, int64(data.From))
log.Debug("[Middleware] Player logout success player id: %v", data.From)
return nil, nil return nil, nil
} }
func ComsumerMsgHandler(data *msg.Msg) (interface{}, error) { func ComsumerMsgHandler(data *msg.Msg) (interface{}, error) {
messageMgrData := getData() messageMgrData := getData()
Message, ok := messageMgrData.MessageList[int64(data.From)] Message, ok := messageMgrData.MessageList[int64(data.To)]
if !ok { if !ok {
return nil, nil return nil, nil
} }

View File

@ -20,10 +20,12 @@ var MSG_ZERO_UPDATE = &Msg{Type: SERVER_ZERO_UPDATE}
var MSG_NOON_UPDATE = &Msg{Type: SERVER_NOON_UPDATE} var MSG_NOON_UPDATE = &Msg{Type: SERVER_NOON_UPDATE}
const ( const (
HANDLE_MOD_PLAYER_MSG = 20001 // 玩家消息 HANDLE_MOD_PLAYER_MSG = 20001 // 玩家消息
HANDLE_MOD_CLUSTER_MSG = 20002 // 集群消息 HANDLE_MOD_CLUSTER_MSG = 20002 // 集群消息
HANDLE_MOD_PLAYER_LOGIN = 20003 // 玩家登录消息 HANDLE_MOD_PLAYER_LOGIN = 20003 // 玩家登录消息
HANDLE_MOD_COMSUME_MSG = 20004 // 消费消息 HANDLE_MOD_COMSUME_MSG = 20004 // 消费消息
HANDLE_MOD_CLUSTER_SYNC = 20005 // 集群同步消息
HANDLE_MDO_PLAYER_LOGOUT = 20006 // 玩家登出消息
) )
const ( const (