mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-02-04 14:22:26 +08:00
GM后台服务初步
This commit is contained in:
@@ -3,13 +3,17 @@
|
||||
hk4e game server
|
||||
|
||||
## 开发快速上手
|
||||
|
||||
* Go >= 1.19
|
||||
|
||||
1. 首次需要安装工具 `make dev_tool`
|
||||
1. 生成协议 `make gen`
|
||||
|
||||
## 快速运行
|
||||
|
||||
* mongodb
|
||||
* nats-server
|
||||
|
||||
1. 启动dispatch `cd dispatch/cmd && go run .`
|
||||
1. 启动gate `cd gate/cmd && go run .`
|
||||
1. 启动gs `cd gs/cmd && go run .`
|
||||
|
||||
@@ -40,28 +40,16 @@ func NewController(dao *dao.Dao) (r *Controller) {
|
||||
return nil
|
||||
}
|
||||
r.regionListBase64 = base64.StdEncoding.EncodeToString(regionListModify)
|
||||
r.runEngine()
|
||||
go r.registerRouter()
|
||||
return r
|
||||
}
|
||||
|
||||
func (c *Controller) runEngine() {
|
||||
func (c *Controller) registerRouter() {
|
||||
if config.CONF.Logger.Level == "DEBUG" {
|
||||
gin.SetMode(gin.DebugMode)
|
||||
} else {
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
}
|
||||
go func() {
|
||||
engine := c.registerRouter()
|
||||
port := config.CONF.HttpPort
|
||||
addr := ":" + strconv.FormatInt(int64(port), 10)
|
||||
err := engine.Run(addr)
|
||||
if err != nil {
|
||||
logger.LOG.Error("gin run error: %v", err)
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
func (c *Controller) registerRouter() *gin.Engine {
|
||||
engine := gin.Default()
|
||||
{
|
||||
// 404
|
||||
@@ -140,5 +128,10 @@ func (c *Controller) registerRouter() *gin.Engine {
|
||||
engine.GET("/pictures/gt/a330cf996/slice/86f9db021.png", c.slicePng)
|
||||
engine.GET("/static/ant/sprite2x.1.2.6.png", c.sprite2xPng)
|
||||
}
|
||||
return engine
|
||||
port := config.CONF.HttpPort
|
||||
addr := ":" + strconv.Itoa(port)
|
||||
err := engine.Run(addr)
|
||||
if err != nil {
|
||||
logger.LOG.Error("gin run error: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
12
gm/cmd/application.toml
Normal file
12
gm/cmd/application.toml
Normal file
@@ -0,0 +1,12 @@
|
||||
http_port = 9001
|
||||
|
||||
[logger]
|
||||
level = "DEBUG"
|
||||
method = "CONSOLE"
|
||||
track_line = true
|
||||
|
||||
[database]
|
||||
url = "mongodb://mongo:27017"
|
||||
|
||||
[mq]
|
||||
nats_url = "nats://nats1:4222,nats://nats2:4222,nats://nats3:4222"
|
||||
37
gm/cmd/main.go
Normal file
37
gm/cmd/main.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"hk4e/common/config"
|
||||
"hk4e/gm/controller"
|
||||
"hk4e/logger"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
"time"
|
||||
)
|
||||
|
||||
func main() {
|
||||
filePath := "./application.toml"
|
||||
config.InitConfig(filePath)
|
||||
|
||||
logger.InitLogger("gm")
|
||||
logger.LOG.Info("gm start")
|
||||
|
||||
_ = controller.NewController()
|
||||
|
||||
c := make(chan os.Signal, 1)
|
||||
signal.Notify(c, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
|
||||
for {
|
||||
s := <-c
|
||||
logger.LOG.Info("get a signal %s", s.String())
|
||||
switch s {
|
||||
case syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT:
|
||||
logger.LOG.Info("gm exit")
|
||||
time.Sleep(time.Second)
|
||||
return
|
||||
case syscall.SIGHUP:
|
||||
default:
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
51
gm/controller/controller.go
Normal file
51
gm/controller/controller.go
Normal file
@@ -0,0 +1,51 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"hk4e/common/config"
|
||||
"hk4e/logger"
|
||||
"net/http"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type Controller struct {
|
||||
}
|
||||
|
||||
func NewController() (r *Controller) {
|
||||
r = new(Controller)
|
||||
go r.registerRouter()
|
||||
return r
|
||||
}
|
||||
|
||||
func (c *Controller) authorize() gin.HandlerFunc {
|
||||
return func(context *gin.Context) {
|
||||
if true {
|
||||
// 验证通过
|
||||
context.Next()
|
||||
return
|
||||
}
|
||||
// 验证不通过
|
||||
context.Abort()
|
||||
context.JSON(http.StatusOK, gin.H{
|
||||
"code": "10001",
|
||||
"msg": "没有访问权限",
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Controller) registerRouter() {
|
||||
if config.CONF.Logger.Level == "DEBUG" {
|
||||
gin.SetMode(gin.DebugMode)
|
||||
} else {
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
}
|
||||
engine := gin.Default()
|
||||
engine.Use(c.authorize())
|
||||
engine.POST("/gm/cmd", c.gmCmd)
|
||||
port := config.CONF.HttpPort
|
||||
addr := ":" + strconv.Itoa(port)
|
||||
err := engine.Run(addr)
|
||||
if err != nil {
|
||||
logger.LOG.Error("gin run error: %v", err)
|
||||
}
|
||||
}
|
||||
20
gm/controller/gm_controller.go
Normal file
20
gm/controller/gm_controller.go
Normal file
@@ -0,0 +1,20 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"hk4e/logger"
|
||||
)
|
||||
|
||||
type GmCmdReq struct {
|
||||
FuncName string `json:"func_name"`
|
||||
Param []string `json:"param"`
|
||||
}
|
||||
|
||||
func (c *Controller) gmCmd(context *gin.Context) {
|
||||
gmCmdReq := new(GmCmdReq)
|
||||
err := context.ShouldBindJSON(gmCmdReq)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
logger.LOG.Info("%v", gmCmdReq)
|
||||
}
|
||||
Reference in New Issue
Block a user