| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- package msg
- import (
- "rocommon"
- "rocommon/service"
- "rocommon/util"
- "roserver/baseserver/model"
- "roserver/serverproto"
- model2 "roserver/social/model"
- "strings"
- )
- func init() {
- //Default
- serverproto.Handle_SOCIAL_Default = func(ev rocommon.ProcEvent) {
- switch e := ev.Msg().(type) {
- case *serverproto.ServiceIdentifyACK: //服务器阶段断开连接
- if strings.Contains(e.ServiceId, model.SERVICE_NODE_TYPE_SOCIAL_STR) {
- //util.InfoF("serverproto.ServiceIdentifyACK msg=%v", e.ServiceId)
- //连接social后获取,后启动的social获取之前正常social的在线离线状态
- if !model2.InitSocialData && len(model2.SocialPlayerMag) <= 0 && len(model2.SocialOfflinePlayerMag) <= 0 {
- if service.GetServiceConfig().ServerStartTime < e.ServerStartTime {
- reqMsg := &serverproto.SSGetSocialInitDataReq{}
- model2.SendAllSocial(reqMsg)
- }
- }
- model2.InitSocialData = true
- }
- }
- //来自router跨服转发消息处理
- switch e := ev.(type) {
- case *model.RecvRouterServiceMsgEvent: //来自crossrouter消息
- //这边可以根据消息类型来处理不同消息的转发
- if e.ClientID > 0 {
- socialPlayer := model2.GetSocialPlayer(e.ClientID)
- if socialPlayer != nil {
- socialPlayer.SendGame(e.Message)
- }
- } else if len(e.ClientIDList) > 0 {
- model2.SendToAllGameWithUidList(e.Message, e.ClientIDList)
- }
- }
- }
- //收到其他social服务器获取状态数据请求
- serverproto.Handle_SOCIAL_SSGetSocialInitDataReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.SSGetSocialInitDataReq)
- util.InfoF("receive SSGetSocialInitDataReq msg:%v", msg)
- ackMsg := &serverproto.SSGetSocialInitDataAck{}
- model2.GetInitSocialData(ackMsg)
- if len(ackMsg.OnlinePlayerList) > 0 || len(ackMsg.OfflinePlayerList) > 0 {
- model.ServiceReplay(ev, ackMsg)
- }
- })
- //social启动时从其他其他social获取的状态数据
- serverproto.Handle_SOCIAL_SSGetSocialInitDataAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.SSGetSocialInitDataAck)
- util.InfoF("receive SSGetSocialInitDataAck msg:%v", msg)
- model2.InitSocialDataFromOtherSocialService(msg)
- })
- //玩家上线通知
- serverproto.Handle_SOCIAL_SSPlayerOnlineNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.SSPlayerOnlineNtf)
- util.InfoF("receive SSPlayerOnlineNtf msg:%v", msg)
- model2.AddSocialPlayer(msg.ServiceNode, msg.BriefInfo)
- ssNtfMsg := &serverproto.SSPlayerOnlineNumNtf{
- OnlineNum: model2.GetSocialPlayerNum(),
- }
- //发送给其他game服务器节点
- model2.SendToAllGame(ssNtfMsg)
- })
- //玩家下线通知
- serverproto.Handle_SOCIAL_SSPlayerOfflineNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
- msg := ev.Msg().(*serverproto.SSPlayerOfflineNtf)
- util.InfoF("receive SSPlayerOfflineNtf msg:%v", msg)
- model2.RemoveSocialPlayer(msg.Uid)
- ssNtfMsg := &serverproto.SSPlayerOnlineNumNtf{
- OnlineNum: model2.GetSocialPlayerNum(),
- }
- //发送给其他game服务器节点
- model2.SendToAllGame(ssNtfMsg)
- })
- }
|