From e7cb90ed6305ff621dc3e4f3672da7dfac910350 Mon Sep 17 00:00:00 2001 From: liuxiaobo <1224730913@qq.com> Date: Tue, 17 Jun 2025 10:58:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/baseroom/baseRoom.go | 2 +- common/baseroom/hundredRoom.go | 2 +- common/gameService/gameService.go | 23 ++++++++++++++++---- server/colorgame/model/db.go | 16 +++++++------- server/colorgame/server/service.go | 2 +- server/gate/model/db.go | 25 +++++++-------------- server/gate/server/processor.go | 1 + server/gate/server/service.go | 2 +- server/lobby/model/db.go | 23 +++++++++----------- server/lobby/server/service.go | 2 +- server/login/model/db.go | 27 ++++++++++------------- server/login/server/processor.go | 5 +---- server/login/server/service.go | 2 +- server/match/model/db.go | 35 ++++++++++-------------------- server/match/server/match.go | 16 ++++++-------- server/match/server/processor.go | 2 +- server/match/server/service.go | 2 +- 17 files changed, 85 insertions(+), 102 deletions(-) diff --git a/common/baseroom/baseRoom.go b/common/baseroom/baseRoom.go index 7547e6a..56013ac 100644 --- a/common/baseroom/baseRoom.go +++ b/common/baseroom/baseRoom.go @@ -159,7 +159,7 @@ func (r *BaseRoom[Seat]) SendMsg(user IPlayer, msgId pb.MsgId, msg proto.Message user.Robot().OnMessage(msgId, msg) } else { iMsg := ipb.MakeMsgEx(r.srv.Name(), 0, user.Id(), int32(msgId), msg) - _ = r.srv.Send(user.GateTopicName(), iMsg) + _ = r.srv.SendByTopic(user.GateTopicName(), iMsg) } } diff --git a/common/baseroom/hundredRoom.go b/common/baseroom/hundredRoom.go index 1929ce8..dd3764a 100644 --- a/common/baseroom/hundredRoom.go +++ b/common/baseroom/hundredRoom.go @@ -114,7 +114,7 @@ func (r *HundredRoom) SendMsg(user IPlayer, msgId pb.MsgId, msg proto.Message) { user.Robot().OnMessage(msgId, msg) } else { iMsg := ipb.MakeMsgEx(r.room.srv.Name(), 0, user.Id(), int32(msgId), msg) - _ = r.room.srv.Send(user.GateTopicName(), iMsg) + _ = r.room.srv.SendByTopic(user.GateTopicName(), iMsg) } } diff --git a/common/gameService/gameService.go b/common/gameService/gameService.go index 302b5c2..2a0bca7 100644 --- a/common/gameService/gameService.go +++ b/common/gameService/gameService.go @@ -2,14 +2,18 @@ package gameService import ( "fmt" + "game/common/config" + "game/common/constant" "game/common/proto/pb" "game/common/userBindService" - "game/server/colorgame/model" + "game/common/utils" + "github.com/fox/fox/db" "github.com/fox/fox/etcd" "github.com/fox/fox/ipb" "github.com/fox/fox/log" "github.com/fox/fox/processor" "github.com/fox/fox/service" + "github.com/go-redis/redis/v8" "github.com/golang/protobuf/proto" "time" ) @@ -20,7 +24,7 @@ type GameService struct { bindService *userBindService.UserBindService } -func NewGameService(param *service.InitNatsServiceParams) *GameService { +func NewGameService(param *service.InitNatsServiceParams, cfgRedis *config.Redis) *GameService { var err error s := new(GameService) s.NatsService, err = service.NewNatsService(param) @@ -28,7 +32,14 @@ func NewGameService(param *service.InitNatsServiceParams) *GameService { log.Fatal(err.Error()) return nil } - s.bindService = userBindService.NewUserBindService(model.UserBindServiceRedis, s.ServiceEtcd()) + var userBindServiceRedis *redis.Client + userBindServiceRedis, err = db.InitRedis(cfgRedis.Password, cfgRedis.Host, cfgRedis.Port, constant.Redis3UserBindService) + if err != nil { + log.Fatal(err.Error()) + return nil + } + utils.AutoSetRedisPool(userBindServiceRedis) + s.bindService = userBindService.NewUserBindService(userBindServiceRedis, s.ServiceEtcd()) s.processor = processor.NewProcessor() return s } @@ -65,9 +76,13 @@ func (s *GameService) SendServiceMsg(sid pb.ServiceTypeId, userId int64, msgId i return } topic := service.TopicEx(node.Name) + s.SendServiceMsgByTopic(topic, 0, userId, msgId, msg) +} + +func (s *GameService) SendServiceMsgByTopic(topic string, connId uint32, userId int64, msgId int32, msg proto.Message) { log.DebugF("send to:%v msg id:%v, msg:%v", topic, pb.MsgId(msgId), msg.String()) data, _ := proto.Marshal(msg) - s.SendServiceData(topic, 0, userId, msgId, data) + s.SendServiceData(topic, connId, userId, msgId, data) } // 向内部服务发送消息 diff --git a/server/colorgame/model/db.go b/server/colorgame/model/db.go index 721c91b..170912e 100644 --- a/server/colorgame/model/db.go +++ b/server/colorgame/model/db.go @@ -10,20 +10,20 @@ import ( ) var ( - UserBindServiceRedis *redis.Client - UserRedis *redis.Client + //UserBindServiceRedis *redis.Client + UserRedis *redis.Client ) func InitRedis() { log.Debug("init redis") var err error cfg := &config.Cfg.Redis - UserBindServiceRedis, err = db.InitRedis(cfg.Password, cfg.Host, cfg.Port, constant.Redis3UserBindService) - if err != nil { - log.Fatal(err.Error()) - return - } - utils.AutoSetRedisPool(UserBindServiceRedis) + //UserBindServiceRedis, err = db.InitRedis(cfg.Password, cfg.Host, cfg.Port, constant.Redis3UserBindService) + //if err != nil { + // log.Fatal(err.Error()) + // return + //} + //utils.AutoSetRedisPool(UserBindServiceRedis) UserRedis, err = db.InitRedis(cfg.Password, cfg.Host, cfg.Port, constant.Redis1User) if err != nil { diff --git a/server/colorgame/server/service.go b/server/colorgame/server/service.go index ad4ab90..c969e89 100644 --- a/server/colorgame/server/service.go +++ b/server/colorgame/server/service.go @@ -58,7 +58,7 @@ func newColorService(serviceId int) service.IService { OnFunc: s, TypeId: int(pb.ServiceTypeId_STI_ColorGame), Version: config.Cfg.BuildDate, - }) + }, &config.Cfg.Redis) s.initProcessor() s.playerMgr = baseroom.NewPlayerMgr(nil) diff --git a/server/gate/model/db.go b/server/gate/model/db.go index 524cacf..057e7ed 100644 --- a/server/gate/model/db.go +++ b/server/gate/model/db.go @@ -1,22 +1,13 @@ package model -import ( - "game/common/constant" - "game/common/utils" - "game/server/gate/config" - "github.com/fox/fox/db" - "github.com/fox/fox/log" - "github.com/go-redis/redis/v8" -) - -var UserBindServiceRedis *redis.Client -var err error +//var UserBindServiceRedis *redis.Client +//var err error func InitRedis() { - UserBindServiceRedis, err = db.InitRedis(config.Cfg.Redis.Password, config.Cfg.Redis.Host, config.Cfg.Redis.Port, constant.Redis3UserBindService) - if err != nil { - log.Fatal(err.Error()) - return - } - utils.AutoSetRedisPool(UserBindServiceRedis) + //UserBindServiceRedis, err = db.InitRedis(config.Cfg.Redis.Password, config.Cfg.Redis.Host, config.Cfg.Redis.Port, constant.Redis3UserBindService) + //if err != nil { + // log.Fatal(err.Error()) + // return + //} + //utils.AutoSetRedisPool(UserBindServiceRedis) } diff --git a/server/gate/server/processor.go b/server/gate/server/processor.go index f38a60e..b5249e8 100644 --- a/server/gate/server/processor.go +++ b/server/gate/server/processor.go @@ -36,6 +36,7 @@ func (s *GateService) onUserLogin(iMsg *ipb.InternalMsg, conn ws.IConn, msg *pb. if sName != "" && sName != s.Name() { s.SendServiceMsg(service.TopicEx(sName), conn, int32(pb.MsgId_RspUserLogoutId), &pb.RspUserLogout{Code: pb.ErrCode_LoginDiffLoc}) } + s.BindService().SaveUserService(msg.UserId, pb.ServiceTypeId_STI_Gate, s.Name()) // 广播玩家上线 s.SendServiceMsg(topicName.UserOnline, conn, int32(pb.MsgId_NtfUserOnlineId), &pb.NtfUserOnline{UserId: msg.UserId}) } diff --git a/server/gate/server/service.go b/server/gate/server/service.go index 1a009c4..74c959f 100644 --- a/server/gate/server/service.go +++ b/server/gate/server/service.go @@ -54,7 +54,7 @@ func newGateService(serviceId int) *GateService { OnFunc: s, TypeId: int(pb.ServiceTypeId_STI_Gate), Version: config.Cfg.BuildDate, - }) + }, &config.Cfg.Redis) addressPos := serviceId - config.Command.ServiceId if len(config.GateCfg.Address) <= addressPos { diff --git a/server/lobby/model/db.go b/server/lobby/model/db.go index d0decdd..cd32bcc 100644 --- a/server/lobby/model/db.go +++ b/server/lobby/model/db.go @@ -1,20 +1,17 @@ package model -import ( - "game/common/constant" - "game/server/lobby/config" - "github.com/fox/fox/db" - "github.com/fox/fox/log" - "github.com/go-redis/redis/v8" +var ( +// UserRedis *redis.Client +// UserDB *gorm.DB +// LogDB *gorm.DB ) -var UserRedis *redis.Client -var err error +//var err error func InitRedis() { - UserRedis, err = db.InitRedis(config.Cfg.Redis.Password, config.Cfg.Redis.Host, config.Cfg.Redis.Port, constant.Redis1User) - if err != nil { - log.Fatal(err.Error()) - return - } + //UserRedis, err = db.InitRedis(config.Cfg.Redis.Password, config.Cfg.Redis.Host, config.Cfg.Redis.Port, constant.Redis1User) + //if err != nil { + // log.Fatal(err.Error()) + // return + //} } diff --git a/server/lobby/server/service.go b/server/lobby/server/service.go index 3747e76..d3cd18d 100644 --- a/server/lobby/server/service.go +++ b/server/lobby/server/service.go @@ -51,7 +51,7 @@ func newLobbyService(serviceId int) *LobbyService { OnFunc: s, TypeId: int(pb.ServiceTypeId_STI_Lobby), Version: config.Cfg.BuildDate, - }) + }, &config.Cfg.Redis) s.initProcessor() s.OnInit() diff --git a/server/login/model/db.go b/server/login/model/db.go index 892aba0..6777e87 100644 --- a/server/login/model/db.go +++ b/server/login/model/db.go @@ -1,30 +1,25 @@ package model import ( - "game/common/constant" - "game/common/utils" - "game/server/login/config" - "github.com/fox/fox/db" "github.com/fox/fox/log" - "github.com/go-redis/redis/v8" ) var ( - UserBindServiceRedis *redis.Client - // UserDB *gorm.DB - // LogDB *gorm.DB +// UserBindServiceRedis *redis.Client +// UserDB *gorm.DB +// LogDB *gorm.DB ) func InitRedis() { log.Debug("init redis") - var err error - cfg := &config.Cfg.Redis - UserBindServiceRedis, err = db.InitRedis(cfg.Password, cfg.Host, cfg.Port, constant.Redis3UserBindService) - if err != nil { - log.Fatal(err.Error()) - return - } - utils.AutoSetRedisPool(UserBindServiceRedis) + //var err error + //cfg := &config.Cfg.Redis + //UserBindServiceRedis, err = db.InitRedis(cfg.Password, cfg.Host, cfg.Port, constant.Redis3UserBindService) + //if err != nil { + // log.Fatal(err.Error()) + // return + //} + //utils.AutoSetRedisPool(UserBindServiceRedis) } // diff --git a/server/login/server/processor.go b/server/login/server/processor.go index 29aef13..223b503 100644 --- a/server/login/server/processor.go +++ b/server/login/server/processor.go @@ -13,7 +13,6 @@ import ( "github.com/fox/fox/processor" "github.com/fox/fox/service" "github.com/fox/fox/xrand" - "github.com/golang/protobuf/proto" "time" ) @@ -153,9 +152,7 @@ func (s *LoginService) onLoginOrRegister(iMsg *ipb.InternalMsg, req *pb.ReqUserL } } topic := service.TopicEx(iMsg.ServiceName) - log.DebugF("send to:%v msg id:%v, msg:%v", topic, pb.MsgId_RspUserLoginId, rsp.String()) - data, _ := proto.Marshal(rsp) - s.SendServiceData(topic, iMsg.ConnId, userId, int32(pb.MsgId_RspUserLoginId), data) + s.SendServiceMsgByTopic(topic, iMsg.ConnId, userId, int32(pb.MsgId_RspUserLoginId), rsp) if account != nil && account.ID > 0 { loginLog := &user.UserLoginLog{ diff --git a/server/login/server/service.go b/server/login/server/service.go index f0be0a2..0ee29e4 100644 --- a/server/login/server/service.go +++ b/server/login/server/service.go @@ -52,7 +52,7 @@ func newLoginService(serviceId int) *LoginService { OnFunc: s, TypeId: int(pb.ServiceTypeId_STI_Login), Version: config.Cfg.BuildDate, - }) + }, &config.Cfg.Redis) s.initProcessor() s.OnInit() diff --git a/server/match/model/db.go b/server/match/model/db.go index 824868d..6f4bad1 100644 --- a/server/match/model/db.go +++ b/server/match/model/db.go @@ -1,38 +1,27 @@ package model import ( - "game/common/constant" - "game/common/utils" - "game/server/match/config" - "github.com/fox/fox/db" "github.com/fox/fox/log" - "github.com/go-redis/redis/v8" ) var ( - UserBindServiceRedis *redis.Client - ConfigRedis *redis.Client - // UserDB *gorm.DB - // LogDB *gorm.DB +// UserBindServiceRedis *redis.Client +// ConfigRedis *redis.Client +// UserDB *gorm.DB +// LogDB *gorm.DB ) func InitRedis() { log.Debug("init redis") - var err error - cfg := &config.Cfg.Redis - UserBindServiceRedis, err = db.InitRedis(cfg.Password, cfg.Host, cfg.Port, constant.Redis3UserBindService) - if err != nil { - log.Fatal(err.Error()) - return - } - utils.AutoSetRedisPool(UserBindServiceRedis) + //var err error + //cfg := &config.Cfg.Redis + //UserBindServiceRedis, err = db.InitRedis(cfg.Password, cfg.Host, cfg.Port, constant.Redis3UserBindService) + //if err != nil { + // log.Fatal(err.Error()) + // return + //} + //utils.AutoSetRedisPool(UserBindServiceRedis) - ConfigRedis, err = db.InitRedis(cfg.Password, cfg.Host, cfg.Port, constant.Redis0Config) - if err != nil { - log.Fatal(err.Error()) - return - } - utils.AutoSetRedisPool(UserBindServiceRedis) } // diff --git a/server/match/server/match.go b/server/match/server/match.go index f024a10..191129e 100644 --- a/server/match/server/match.go +++ b/server/match/server/match.go @@ -18,25 +18,23 @@ func (s *MatchService) onMatchRoom(iMsg *ipb.InternalMsg, req *pb.ReqMatchRoom) gameId := req.GameId switch gameId { case pb.ServiceTypeId_STI_ColorGame: - node, err := s.bindService.FindServiceNode(gameId, iMsg.UserId) + node, err := s.BindService().FindServiceNode(gameId, iMsg.UserId) if err != nil { log.ErrorF("db service node error:%v", err) - s.SendServiceMsg(iMsg.ServiceName, service.TopicEx(iMsg.ServiceName), iMsg.ConnId, iMsg.UserId, - int32(pb.MsgId_RspMatchRoomId), &pb.RspMatchRoom{Code: pb.ErrCode_SystemErr}) + s.SendServiceMsg(pb.ServiceTypeId_STI_Gate, iMsg.UserId, int32(pb.MsgId_RspMatchRoomId), &pb.RspMatchRoom{Code: pb.ErrCode_SystemErr}) return } - s.SendServiceMsg(iMsg.ServiceName, service.TopicEx(iMsg.ServiceName), iMsg.ConnId, iMsg.UserId, - int32(pb.MsgId_RspMatchRoomId), &pb.RspMatchRoom{}) - s.SendServiceMsg(iMsg.ServiceName, service.TopicEx(node.Name), iMsg.ConnId, iMsg.UserId, + s.SendServiceMsg(pb.ServiceTypeId_STI_Gate, iMsg.UserId, int32(pb.MsgId_RspMatchRoomId), &pb.RspMatchRoom{}) + s.SendServiceMsgByTopic(service.TopicEx(node.Name), iMsg.ConnId, iMsg.UserId, int32(pb.MsgId_ReqEnterRoomId), &pb.ReqEnterRoom{}) return } var us *user.GameUser rsp := &pb.RspMatchRoom{} - us, rsp.Code = rpc.RpcGetGameUser(s.bindService, s, iMsg.UserId) + us, rsp.Code = rpc.RpcGetGameUser(s, iMsg.UserId) if rsp.Code != pb.ErrCode_OK { - s.SendServiceMsg(iMsg.ServiceName, service.TopicEx(iMsg.ServiceName), iMsg.ConnId, iMsg.UserId, int32(pb.MsgId_RspMatchRoomId), rsp) + s.SendServiceMsg(pb.ServiceTypeId_STI_Gate, iMsg.UserId, int32(pb.MsgId_RspMatchRoomId), rsp) return } vipLv, vipExp := utils.VipLevel(us.VipExp) @@ -57,6 +55,6 @@ func (s *MatchService) onMatchRoom(iMsg *ipb.InternalMsg, req *pb.ReqMatchRoom) rsp.ColorInfo = &pb.RspMatchRoom_ColorInfo{} } - s.SendServiceMsg(iMsg.ServiceName, service.TopicEx(iMsg.ServiceName), iMsg.ConnId, iMsg.UserId, int32(pb.MsgId_RspMatchRoomId), rsp) + s.SendServiceMsg(pb.ServiceTypeId_STI_Gate, iMsg.UserId, int32(pb.MsgId_RspMatchRoomId), rsp) }, nil) } diff --git a/server/match/server/processor.go b/server/match/server/processor.go index c04a3a1..edfd6db 100644 --- a/server/match/server/processor.go +++ b/server/match/server/processor.go @@ -10,7 +10,7 @@ const ( ) func (s *MatchService) initProcessor() { - s.processor.RegisterMessages(processor.RegisterMetas{ + s.Processor().RegisterMessages(processor.RegisterMetas{ pb.MsgId_ReqMatchRoomId: {pb.ReqMatchRoom{}, s.onMatchRoom}, }) } diff --git a/server/match/server/service.go b/server/match/server/service.go index f3154e1..b5b0b01 100644 --- a/server/match/server/service.go +++ b/server/match/server/service.go @@ -55,7 +55,7 @@ func newService(serviceId int) *MatchService { OnFunc: s, TypeId: int(pb.ServiceTypeId_STI_Match), Version: config.Cfg.BuildDate, - }) + }, &config.Cfg.Redis) s.initProcessor() s.OnInit()