init_hooker.go 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package baseserver
  2. import (
  3. "log"
  4. "rocommon"
  5. "rocommon/socket"
  6. gatemodel "roserver/gate/model"
  7. )
  8. func init() {
  9. log.SetFlags(log.Lshortfile | log.LstdFlags)
  10. log.Println("base server init hooker [RegisterProcessRPC]")
  11. //gate处理前端
  12. socket.RegisterProcessRPC("gate.frontend",
  13. func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
  14. b.SetTransmitter(new(gatemodel.DirectTCPMessageProcessor)) //直接传递数据或者返回数据给client,例如pingack
  15. b.SetHooker(socket.NewMultiTCPEventHook(
  16. new(gatemodel.FrontendTCPEventHook), //gate消息处理
  17. new(socket.TCPEventHook), //基础消息处理
  18. ))
  19. b.SetCallback(socket.QueueEventCall(userCb))
  20. })
  21. //gate websocket前端处理
  22. socket.RegisterProcessRPC("gatews.frontend",
  23. func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
  24. b.SetTransmitter(new(gatemodel.DirectWSMessageTransmitter)) //直接传递数据或者返回数据给client,例如pingack
  25. b.SetHooker(socket.NewMultiTCPEventHook(
  26. new(gatemodel.FrontendTCPEventHook), //gate消息处理
  27. new(socket.TCPEventHook), //基础消息处理
  28. ))
  29. b.SetCallback(socket.QueueEventCall(userCb))
  30. })
  31. //gate连接后端的处理
  32. socket.RegisterProcessRPC("gate.backend",
  33. func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
  34. b.SetTransmitter(new(socket.TCPMessageProcessor)) //pb 解析数据
  35. b.SetHooker(socket.NewMultiTCPEventHook(
  36. new(ServerTCPEventHook), //服务器间互联消息处理
  37. new(gatemodel.BroadcasterTCPEventHook), //gate消息处理
  38. new(socket.TCPEventHook), //基础消息处理
  39. ))
  40. b.SetCallback(socket.QueueEventCall(userCb))
  41. })
  42. //todo...
  43. //回调处理器绑定
  44. //后端服务器处理
  45. socket.RegisterProcessRPC("game.backend",
  46. func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
  47. b.SetTransmitter(new(socket.TCPMessageProcessor)) //pb解析数据
  48. b.SetHooker(socket.NewMultiTCPEventHook(
  49. new(ServerTCPEventHook), //服务器间互联消息处理
  50. new(BackendTCPEventHook), //game服务器处理gate透传过来的消息
  51. new(socket.TCPEventHook), //基础消息处理
  52. ))
  53. b.SetCallback(socket.QueueEventCall(userCb))
  54. })
  55. //todo...
  56. //db处理game的请求
  57. socket.RegisterProcessRPC("db.backend",
  58. func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
  59. b.SetTransmitter(new(socket.TCPMessageProcessor))
  60. b.SetHooker(socket.MultiTCPEventHook{
  61. new(ServerTCPEventHook), //服务器间互联消息处理
  62. new(ServiceTCPEventHook), //和db服务器相关的协议处理
  63. new(socket.TCPEventHook), //基础消息处理
  64. })
  65. b.SetCallback(socket.QueueEventCall(userCb))
  66. })
  67. //auth处理gate请求,后续的登陆验证
  68. socket.RegisterProcessRPC("auth.backend",
  69. func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
  70. b.SetTransmitter(new(socket.TCPMessageProcessor))
  71. b.SetHooker(socket.MultiTCPEventHook{
  72. new(ServerTCPEventHook), //服务器间互联消息处理
  73. new(BackendTCPEventHook), //和gate服务器相关的协议处理
  74. new(socket.TCPEventHook), //基础消息处理
  75. })
  76. b.SetCallback(socket.QueueEventCall(userCb))
  77. })
  78. //social处理聊天,好友,邮件等信息
  79. socket.RegisterProcessRPC("social.backend",
  80. func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
  81. b.SetTransmitter(new(socket.TCPMessageProcessor))
  82. b.SetHooker(socket.MultiTCPEventHook{
  83. new(ServerTCPEventHook), //服务器间互联消息处理
  84. new(BackendTCPEventHook), //和game服务器相关的协议处理
  85. new(socket.TCPEventHook), //基础消息处理
  86. })
  87. b.SetCallback(socket.QueueEventCall(userCb))
  88. })
  89. //aoi同步处理
  90. socket.RegisterProcessRPC("aoi.backend",
  91. func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
  92. b.SetTransmitter(new(socket.TCPMessageProcessor))
  93. b.SetHooker(socket.MultiTCPEventHook{
  94. new(ServerTCPEventHook), //服务器间互联消息处理
  95. new(BackendTCPEventHook),
  96. new(socket.TCPEventHook), //基础消息处理
  97. })
  98. b.SetCallback(socket.QueueEventCall(userCb))
  99. })
  100. //common
  101. socket.RegisterProcessRPC("common.backend",
  102. func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
  103. b.SetTransmitter(new(socket.TCPMessageProcessor))
  104. b.SetHooker(socket.MultiTCPEventHook{
  105. new(ServerTCPEventHook), //服务器间互联消息处理
  106. new(BackendTCPEventHook),
  107. new(socket.TCPEventHook), //基础消息处理
  108. })
  109. b.SetCallback(socket.QueueEventCall(userCb))
  110. })
  111. //webgm
  112. socket.RegisterProcessRPC("http",
  113. func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
  114. b.SetCallback(socket.QueueEventCall(userCb))
  115. })
  116. //corssrouter
  117. socket.RegisterProcessRPC("crossrouter.backend",
  118. func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
  119. b.SetTransmitter(new(socket.TCPMessageProcessor))
  120. b.SetHooker(socket.MultiTCPEventHook{
  121. new(ServerTCPEventHook), //服务器间互联消息处理
  122. new(BackendTCPEventForCrossRouterHook),
  123. new(socket.TCPEventHook), //基础消息处理
  124. })
  125. b.SetCallback(socket.QueueEventCall(userCb))
  126. })
  127. }