package main import ( "github.com/gin-gonic/gin" "io/ioutil" _ "net/http" "os" "rocommon/service" _ "rocommon/socket" _ "rocommon/socket/http" _ "rocommon/socket/tcp" "rocommon/util" "roweb/serverlist/model" "runtime" "strconv" "syscall" ) ///https://github.com/gin-gonic/gin func main() { //记录gate pid用来做关闭操作 sysType := runtime.GOOS if sysType != "windows" { if pid := syscall.Getpid(); pid != 1 { fileName := "serverlist.pid" + string(strconv.Itoa(pid)) ioutil.WriteFile(fileName, []byte(strconv.Itoa(pid)), 0777) defer os.Remove(fileName) } } service.Init("roweb") //todo... // 1,做动态热加载 // 2,在获取文件内容时判断md5码然后进行加载,不加锁 // 3, 是否需要放在mysql中 // 4,是否需要支持通过后台web页面操作的方式来添加服务器组 // 目前先做简单版本,放到配置文件中,修改后自动热加载,后期可以直接放到数据库中 serverListFile := *(service.FlagServerList) //./serverlist.yaml model.InitConfig(serverListFile) sConfig := service.GetServiceConfig() //sdk http model.SetHttpNodeParam(&model.ServiceParam{ ServiceType: "httpConnector", ServiceName: "game", //LisAddr: "serverlist.wtgame.cn:8088", //LisAddr: sConfig.Node.ServerList, }) httpLogHandleFunc := func(c *gin.Context) { // 请求方式 reqMethod := c.Request.Method // 请求路由 reqUri := c.Request.RequestURI // 状态码 statusCode := c.Writer.Status() // 请求IP clientIP := c.ClientIP() util.DebugF("requst=| statusCode=%3d | clientIP=%s | reqMethod=%s | reqUri=%s |", statusCode, clientIP, reqMethod, reqUri) } //对外开放端口 go func() { router := gin.Default() router.Use(httpLogHandleFunc) r1 := router.Group("/serverlist") //获取服务器列表 r1.HEAD("", model.GetHeadInfo) r1.GET("", model.GetServerListNew) //r1.GET("", model.GetServerList) //sdk 登录校验 rSdkCheck := router.Group("/sdkcheck") //rSdkCheck.POST("", model.SDKCheck) rSdkCheck.GET("", model.SDKCheck) rSdkCheck.GET("/webtoken", model.UniSdkWebToken) //服务器维护操作 r1.GET("/maintain", model.ServerMaintain) //玩家服务器角色信息注册 r1.POST("/add", model.AddOpenIDServer) //修改服务器信息(gmt负责修改) r1.GET("/server", model.SetServerInfo) router.Run(sConfig.Node.Addr) }() //对内开放端口 go func() { router := gin.Default() router.Use(httpLogHandleFunc) r1 := router.Group("/serverlist") //服务器维护操作 r1.GET("/maintain", model.ServerMaintain) //玩家服务器角色信息注册 r1.POST("/add", model.AddOpenIDServer) //修改服务器信息(gmt负责修改) r1.GET("/server", model.SetServerInfo) router.Run(sConfig.Node.HttpAddr) }() service.WaitExitSignal() }