web.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package web
  2. import (
  3. cherryApp "f1-game/internal/cherry_app"
  4. checkCenter "f1-game/internal/component/check_center"
  5. funcLoad "f1-game/internal/component/func_load"
  6. cgops "f1-game/internal/component/gops"
  7. "f1-game/internal/component/rate"
  8. "f1-game/internal/component/redis"
  9. "f1-game/internal/component/sdk"
  10. "f1-game/internal/data"
  11. "f1-game/nodes/web/controller"
  12. "github.com/cherry-game/cherry"
  13. csnowflake "github.com/cherry-game/cherry/extend/snowflake"
  14. cfacade "github.com/cherry-game/cherry/facade"
  15. cgin "github.com/cherry-game/components/gin"
  16. )
  17. func Run(node cfacade.INode) {
  18. app := cherry.ConfigureNode(
  19. node,
  20. false,
  21. cherry.Cluster,
  22. )
  23. app.Register(initFunc())
  24. app.Register(cgops.New())
  25. app.Register(data.NewConfigs(
  26. data.SDK,
  27. data.RateLimiter,
  28. data.Area,
  29. data.AreaServer,
  30. ))
  31. app.Register(redis.NewClients(
  32. redis.GUID,
  33. redis.Center,
  34. ))
  35. app.Register(checkCenter.New())
  36. app.Register(rate.New())
  37. app.Register(sdk.New())
  38. registerWebServer(app)
  39. app.Startup()
  40. }
  41. func initFunc() cfacade.IComponent {
  42. fn := func(app cfacade.IApplication) {
  43. csnowflake.InitDefaultNode(app.NodeID())
  44. cherryApp.Init(app)
  45. }
  46. return funcLoad.New("initFunc", fn)
  47. }
  48. func registerWebServer(app *cherry.AppBuilder) {
  49. // new http server
  50. webServer := cgin.NewHttp("web_server", app.Address())
  51. webServer.Use(cgin.Cors())
  52. webServer.Use(cgin.RecoveryWithZap(true))
  53. webServer.Use(rate.GinRateWithIP())
  54. webServer.Register(
  55. new(controller.IndexController),
  56. new(controller.DevController),
  57. new(controller.LoginController),
  58. new(controller.PayController),
  59. new(controller.PlayerController),
  60. new(controller.ServerController),
  61. )
  62. app.Register(webServer)
  63. }