package web import ( cherryApp "f1-game/internal/cherry_app" checkCenter "f1-game/internal/component/check_center" funcLoad "f1-game/internal/component/func_load" cgops "f1-game/internal/component/gops" "f1-game/internal/component/rate" "f1-game/internal/component/redis" "f1-game/internal/component/sdk" "f1-game/internal/data" "f1-game/nodes/web/controller" "github.com/cherry-game/cherry" csnowflake "github.com/cherry-game/cherry/extend/snowflake" cfacade "github.com/cherry-game/cherry/facade" cgin "github.com/cherry-game/components/gin" ) func Run(node cfacade.INode) { app := cherry.ConfigureNode( node, false, cherry.Cluster, ) app.Register(initFunc()) app.Register(cgops.New()) app.Register(data.NewConfigs( data.SDK, data.RateLimiter, data.Area, data.AreaServer, )) app.Register(redis.NewClients( redis.GUID, redis.Center, )) app.Register(checkCenter.New()) app.Register(rate.New()) app.Register(sdk.New()) registerWebServer(app) app.Startup() } func initFunc() cfacade.IComponent { fn := func(app cfacade.IApplication) { csnowflake.InitDefaultNode(app.NodeID()) cherryApp.Init(app) } return funcLoad.New("initFunc", fn) } func registerWebServer(app *cherry.AppBuilder) { // new http server webServer := cgin.NewHttp("web_server", app.Address()) webServer.Use(cgin.Cors()) webServer.Use(cgin.RecoveryWithZap(true)) webServer.Use(rate.GinRateWithIP()) webServer.Register( new(controller.IndexController), new(controller.DevController), new(controller.LoginController), new(controller.PayController), new(controller.PlayerController), new(controller.ServerController), ) app.Register(webServer) }