Merge remote-tracking branch 'origin/main'

This commit is contained in:
UnKownOwO
2022-11-24 19:47:39 +08:00
6 changed files with 132 additions and 15 deletions

View File

@@ -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 .`

View File

@@ -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
View 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
View 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
}
}
}

View 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)
}
}

View 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)
}