cross_router_msg.go 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package msg
  2. import (
  3. "rocommon"
  4. "rocommon/util"
  5. "roserver/baseserver/model"
  6. "roserver/serverproto"
  7. socialModel "roserver/social/model"
  8. )
  9. func init() {
  10. //获取CrossRouter连接的服务器状态
  11. serverproto.Handle_SOCIAL_SSGetGServerStateReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  12. msg := ev.Msg().(*serverproto.SSGetGServerStateReq)
  13. //util.InfoF("receive SSGetServerStateReq msg:%v", msg)
  14. socialPlayer := socialModel.GetSocialPlayer(cliId.SessID)
  15. if socialPlayer != nil {
  16. if !socialPlayer.SendGCrossRouter(msg) {
  17. ssAckMsg := &serverproto.SSGetGServerStateAck{
  18. ServerType: msg.ServerType,
  19. }
  20. model.ServiceReplay(ev, ssAckMsg)
  21. }
  22. } else {
  23. socialModel.SendGCrossRouter(msg)
  24. }
  25. })
  26. serverproto.Handle_SOCIAL_SSGetGServerStateAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  27. msg := ev.Msg().(*serverproto.SSGetGServerStateAck)
  28. util.InfoF("receive SSGetGServerStateAck msg=%v", msg)
  29. socialPlayer := socialModel.GetSocialPlayer(cliId.SessID)
  30. if socialPlayer != nil {
  31. socialPlayer.SendGame(msg)
  32. } else {
  33. socialModel.SendToAllGame(msg)
  34. }
  35. })
  36. //from router
  37. //跨服协议测试
  38. //默认跨服协议通过social转发给router,router会进行自动分发到对应的服务器进程
  39. serverproto.Handle_SOCIAL_SSCrossYuanHangTrialViewNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  40. msg := ev.Msg().(*serverproto.SSCrossYuanHangTrialViewNtf)
  41. util.InfoF("receive SSCrossYuanHangTrialViewNtf msg=%v", msg)
  42. socialModel.SendToAllGame(msg)
  43. })
  44. //被挑战日志通知
  45. serverproto.Handle_SOCIAL_SSCrossYuanHangTrialLogNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  46. msg := ev.Msg().(*serverproto.SSCrossYuanHangTrialLogNtf)
  47. util.InfoF("receive SSCrossYuanHangTrialLogNtf msg=%v", msg)
  48. //这边可以根据消息类型来处理不同消息的转发
  49. socialPlayer := socialModel.GetSocialPlayer(msg.NtfUid)
  50. if socialPlayer != nil {
  51. socialPlayer.SendGame(msg)
  52. } else {
  53. offlinePlayer := socialModel.GetOfflineSocialPlayer(msg.NtfUid)
  54. if offlinePlayer != nil {
  55. socialModel.SendToGame(offlinePlayer.ServiceNodeId(), msg)
  56. } else {
  57. //玩家不在线,写入到db中
  58. socialModel.SendDB(msg)
  59. }
  60. }
  61. })
  62. }