From 7f5f1b46cc68248b267467b6e48c4a867f5d4ea0 Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Fri, 14 Oct 2022 10:31:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=BA=95=E5=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/core.go | 4 ++-- modules/modulebase.go | 21 ++++++++++++++++++--- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/modules/core.go b/modules/core.go index 6bc9dcd4a..ed64b3ba5 100644 --- a/modules/core.go +++ b/modules/core.go @@ -18,9 +18,9 @@ type ( //归还会话对象 PutUserSession(session comm.IUserSession) //向指定用户发送消息 - SendMsgToUser(mainType, subType string, msg proto.Message, user *pb.CacheUser) (err error) + SendMsgToUser(mainType, subType string, msg proto.Message, uid string) (err error) //向多个用户发送消息 - SendMsgToUsers(mainType, subType string, msg proto.Message, user ...*pb.CacheUser) (err error) + SendMsgToUsers(mainType, subType string, msg proto.Message, uids ...string) (err error) //校验消耗资源 CheckConsumeRes(uid string, res []*cfg.Gameatn) (code pb.ErrorCode) } diff --git a/modules/modulebase.go b/modules/modulebase.go index f94ba455d..49750dd3b 100644 --- a/modules/modulebase.go +++ b/modules/modulebase.go @@ -122,7 +122,12 @@ func (this *ModuleBase) PutUserSession(session comm.IUserSession) { } //向指定用户发送消息 -func (this *ModuleBase) SendMsgToUser(mainType, subType string, msg proto.Message, user *pb.CacheUser) (err error) { +func (this *ModuleBase) SendMsgToUser(mainType, subType string, msg proto.Message, uid string) (err error) { + user := this.ModuleUser.GetUserSession(uid) + if user == nil { + err = fmt.Errorf("user:%v on found", uid) + return + } session := this.scomp.GetUserSession(user) session.SendMsg(mainType, subType, msg) err = session.Push() @@ -131,14 +136,24 @@ func (this *ModuleBase) SendMsgToUser(mainType, subType string, msg proto.Messag } //向多个用户发送消息 -func (this *ModuleBase) SendMsgToUsers(mainType, subType string, msg proto.Message, user ...*pb.CacheUser) (err error) { +func (this *ModuleBase) SendMsgToUsers(mainType, subType string, msg proto.Message, uids ...string) (err error) { var ( + users map[string]*pb.CacheUser gateways map[string]map[string][]string = make(map[string]map[string][]string) cluster map[string][]string = make(map[string][]string) gateway []string ok bool ) - for _, v := range user { + for _, v := range uids { + if user := this.ModuleUser.GetUserSession(v); user != nil { + if user == nil { + err = fmt.Errorf("user:%v on found", v) + continue + } + users[v] = user + } + } + for _, v := range users { if cluster, ok = gateways[v.ServiceTag]; !ok { cluster = make(map[string][]string) gateways[v.ServiceTag] = cluster