| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- package main
- import (
- "io/ioutil"
- "os"
- "rocommon"
- "rocommon/service"
- _ "rocommon/socket"
- _ "rocommon/socket/http"
- _ "rocommon/socket/mysql"
- _ "rocommon/socket/tcp"
- "rocommon/util"
- "roserver/baseserver"
- "roserver/baseserver/model"
- _ "roserver/gmweb/model"
- gmwebmodel "roserver/gmweb/model"
- "roserver/gmweb/msg"
- _ "roserver/gmweb/msg"
- "runtime"
- "runtime/debug"
- "strconv"
- "syscall"
- "github.com/gin-gonic/gin"
- )
- func main() {
- //记录gate pid用来做关闭操作
- sysType := runtime.GOOS
- if sysType != "windows" {
- if pid := syscall.Getpid(); pid != 1 {
- fileName := "webgm_server.pid" + strconv.Itoa(pid)
- ioutil.WriteFile(fileName, []byte(strconv.Itoa(pid)), 0777)
- defer os.Remove(fileName)
- }
- }
- baseserver.Init(model.SERVICE_NODE_TYPE_WEBGM_STR, gmwebmodel.ConfigInit, &gmwebmodel.WebGMUpdate{})
- //baseserver.Init(model.SERVICE_NODE_TYPE_WEBGM_STR, nil, &gmwebmodel.WebGMUpdate{})
- //先建立服务器对应的连接,再监听客户端
- sConfig := service.GetServiceConfig()
- var acceNode rocommon.ServerNode = nil
- if sConfig.Node.Addr != "" {
- acceNode = baseserver.CreateAcceptor(baseserver.ServiceParam{
- ServiceType: "tcpAcceptor",
- ServiceName: model.SERVICE_NODE_TYPE_WEBGM_STR,
- ProcName: "common.backend",
- LisAddr: sConfig.Node.Addr,
- }, sConfig)
- }
- for _, concern := range sConfig.Node.Concern {
- //建立需要链接的服务器,可以通过服务器发现etcd来处理(包含在了CreateConnector中)
- baseserver.CreateConnector(baseserver.ServiceParam{
- DiscoveryServiceName: concern,
- DiscoveryServiceZone: sConfig.Node.Zone,
- ServiceType: "tcpConnector",
- ServiceName: model.SERVICE_NODE_TYPE_WEBGM_STR,
- ProcName: "common.backend",
- })
- }
- //phpserver
- if sConfig.Node.PhpServerAddr != "" {
- gmwebmodel.SetHttpNodeParam(&baseserver.ServiceParam{
- ServiceType: "httpConnector",
- ServiceName: "game",
- //LisAddr: "101.133.164.98/gift",
- LisAddr: sConfig.Node.PhpServerAddr,
- })
- }
- go func() {
- defer func() {
- //打印奔溃信息
- if err := recover(); err != nil {
- util.InfoF("onError data=%v \n%s\n", err, string(debug.Stack()))
- }
- }()
- router := gin.Default()
- router.Use(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)
- })
- apiRouter := router.Group("/api")
- apiRouter.GET("/login", gmwebmodel.UserLogin)
- //r1 := router.Group("/gm", gmwebmodel.GmVerify) //需要登录才能访问
- r1 := router.Group("/gm") //需要登录才能访问
- r1.GET("/user_get", msg.WebGmProcessUserGet)
- r1.GET("/info_get", msg.WebGmProcessUserInfoGet)
- r1.GET("/ban", msg.WebGmProcessBanUser)
- r1.GET("/chat_msg", msg.WebGmProcessChatMsg)
- r1.GET("/mail", msg.WebGmProcessMail)
- //r1.POST("/mail", msg.WebGmProcessMailPost)
- r1.GET("/notice", msg.WebGmProcessNotice)
- r1.GET("/lookmail", msg.WebGMLookMail)
- r1.GET("/sethead", msg.WebGMSetHead)
- r1.GET("/gethead", msg.WebGMGetHead)
- r1.GET("/delitem", msg.WebGMDelItem) //道具删除
- //服务器维护通知
- r1.GET("/maintain", msg.WebGMProcessServerMaintain)
- r1.GET("/register", msg.WebGMProcessServerRegister)
- r1.GET("/reload", msg.WebGMProcessServerConfigReload) //配置文件热加载
- router.POST("/pay", msg.WebPayQuickNotify) // SDKquick 畅梦nbSDK
- router.POST("/pay/hwQucik", msg.WebPayHwQuickNotify) // 海外quick
- router.POST("/pay/hwQucikFromS1GmWeb", msg.WebPayHwQuickNotifyFromS1GmWeb) // 海外quick 1服转发到其他服,这里接收
- //router.POST("/pay/nb", msg.WebPayNBSDKNotify) // 畅梦牛逼SDK
- router.POST("/pay/uni", msg.WebPayUniSDKNotify)
- router.POST("/pay/nbh5", msg.WebPayNBH5Notify) // 畅梦h5
- //
- r1.GET("/guildbattle", msg.WebGmProcessGuildBattle)
- r1.GET("/guildbattle_state", msg.WebGmGetGuildBattleState)
- router.Run(sConfig.Node.HttpAddr)
- }()
- baseserver.Wait()
- //prof.Stop()
- baseserver.Exit(acceNode) //需要unregister的node
- }
|