main.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package main
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "io/ioutil"
  5. _ "net/http"
  6. "os"
  7. "rocommon/service"
  8. _ "rocommon/socket"
  9. _ "rocommon/socket/http"
  10. _ "rocommon/socket/tcp"
  11. "rocommon/util"
  12. "roweb/serverlist/model"
  13. "runtime"
  14. "strconv"
  15. "syscall"
  16. )
  17. ///https://github.com/gin-gonic/gin
  18. func main() {
  19. //记录gate pid用来做关闭操作
  20. sysType := runtime.GOOS
  21. if sysType != "windows" {
  22. if pid := syscall.Getpid(); pid != 1 {
  23. fileName := "serverlist.pid" + string(strconv.Itoa(pid))
  24. ioutil.WriteFile(fileName, []byte(strconv.Itoa(pid)), 0777)
  25. defer os.Remove(fileName)
  26. }
  27. }
  28. service.Init("roweb")
  29. //todo...
  30. // 1,做动态热加载
  31. // 2,在获取文件内容时判断md5码然后进行加载,不加锁
  32. // 3, 是否需要放在mysql中
  33. // 4,是否需要支持通过后台web页面操作的方式来添加服务器组
  34. // 目前先做简单版本,放到配置文件中,修改后自动热加载,后期可以直接放到数据库中
  35. serverListFile := *(service.FlagServerList) //./serverlist.yaml
  36. model.InitConfig(serverListFile)
  37. sConfig := service.GetServiceConfig()
  38. //sdk http
  39. model.SetHttpNodeParam(&model.ServiceParam{
  40. ServiceType: "httpConnector",
  41. ServiceName: "game",
  42. //LisAddr: "serverlist.wtgame.cn:8088",
  43. //LisAddr: sConfig.Node.ServerList,
  44. })
  45. httpLogHandleFunc := func(c *gin.Context) {
  46. // 请求方式
  47. reqMethod := c.Request.Method
  48. // 请求路由
  49. reqUri := c.Request.RequestURI
  50. // 状态码
  51. statusCode := c.Writer.Status()
  52. // 请求IP
  53. clientIP := c.ClientIP()
  54. util.DebugF("requst=| statusCode=%3d | clientIP=%s | reqMethod=%s | reqUri=%s |",
  55. statusCode,
  56. clientIP,
  57. reqMethod,
  58. reqUri)
  59. }
  60. //对外开放端口
  61. go func() {
  62. router := gin.Default()
  63. router.Use(httpLogHandleFunc)
  64. r1 := router.Group("/serverlist")
  65. //获取服务器列表
  66. r1.HEAD("", model.GetHeadInfo)
  67. r1.GET("", model.GetServerListNew)
  68. //r1.GET("", model.GetServerList)
  69. //sdk 登录校验
  70. rSdkCheck := router.Group("/sdkcheck")
  71. //rSdkCheck.POST("", model.SDKCheck)
  72. rSdkCheck.GET("", model.SDKCheck)
  73. rSdkCheck.GET("/webtoken", model.UniSdkWebToken)
  74. //服务器维护操作
  75. r1.GET("/maintain", model.ServerMaintain)
  76. //玩家服务器角色信息注册
  77. r1.POST("/add", model.AddOpenIDServer)
  78. //修改服务器信息(gmt负责修改)
  79. r1.GET("/server", model.SetServerInfo)
  80. router.Run(sConfig.Node.Addr)
  81. }()
  82. //对内开放端口
  83. go func() {
  84. router := gin.Default()
  85. router.Use(httpLogHandleFunc)
  86. r1 := router.Group("/serverlist")
  87. //服务器维护操作
  88. r1.GET("/maintain", model.ServerMaintain)
  89. //玩家服务器角色信息注册
  90. r1.POST("/add", model.AddOpenIDServer)
  91. //修改服务器信息(gmt负责修改)
  92. r1.GET("/server", model.SetServerInfo)
  93. router.Run(sConfig.Node.HttpAddr)
  94. }()
  95. service.WaitExitSignal()
  96. }