Files
origin/example/GateService/GateService.go
2020-04-21 18:25:59 +08:00

126 lines
3.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package GateService
import (
"encoding/json"
"fmt"
"github.com/duanhf2012/origin/network/processor"
"github.com/duanhf2012/origin/node"
"github.com/duanhf2012/origin/service"
"github.com/duanhf2012/origin/sysmodule"
"github.com/duanhf2012/origin/sysservice"
"net/http"
"time"
)
type GateService struct {
service.Service
processor *processor.PBProcessor
processor2 *processor.PBProcessor
httpRouter sysservice.IHttpRouter
redisModule *sysmodule.RedisModule
}
func (slf *GateService) OnInit() error{
tcpervice := node.GetService("TcpService").(*sysservice.TcpService)
slf.processor = &processor.PBProcessor{}
slf.processor.RegisterDisConnected(slf.OnDisconnected)
slf.processor.RegisterConnected(slf.OnConnected)
tcpervice.SetProcessor(slf.processor,slf.GetEventHandler())
wsService := node.GetService("WSService").(*sysservice.WSService)
slf.processor2 = &processor.PBProcessor{}
slf.processor2.RegisterDisConnected(slf.OnWSDisconnected)
slf.processor2.RegisterConnected(slf.OnWSConnected)
wsService.SetProcessor(slf.processor2,slf.GetEventHandler())
httpervice := node.GetService("HttpService").(*sysservice.HttpService)
slf.httpRouter = sysservice.NewHttpHttpRouter()
httpervice.SetHttpRouter(slf.httpRouter,slf.GetEventHandler())
slf.httpRouter.GET("/get/query", slf.HttpTest)
slf.httpRouter.POST("/post/query", slf.HttpTestPost)
slf.httpRouter.SetServeFile(sysservice.METHOD_GET,"/img/head/","d:/img")
//pCronExpr,_ := timer.NewCronExpr("0 * * * * *")
//slf.CronFunc(pCronExpr,slf.Test)
redisCfg := sysmodule.ConfigRedis{
IP :"192.168.0.5",
Port :"6379",
Password :"",
DbIndex :0,
MaxIdle :50, //最大的空闲连接数表示即使没有redis连接时依然可以保持N个空闲的连接而不被清除随时处于待命状态。
MaxActive :50, //最大的激活连接数表示同时最多有N个连接
IdleTimeout :30, //最大的空闲连接等待时间,超过此时间后,空闲连接将被关闭
SyncRouterNum :10, //异步执行Router数量
}
slf.redisModule = &sysmodule.RedisModule{}
slf.redisModule.Init(&redisCfg)
slf.redisModule.OnInit()
slf.AddModule(slf.redisModule)
slf.AfterFunc(time.Second, slf.TestRedis)
return nil
}
func (slf *GateService) Test(){
fmt.Print("xxxxx\n")
}
func (slf *GateService) TestRedis() {
//slf.redisModule.GetHashValueByHashKeyList("BITGET_2160_LastSetLevelInfo", "SBTC_USD_1", "BTC_SUSDT_1", "SBTC_USD_3")
//slf.redisModule.GetHashValueByKey("BITGET_2160_LastSetLevelInfo", "SBTC_USD_1")
slf.redisModule.ScanMatchKeys(192, "ZC*", 100)
}
func (slf *GateService) HttpTest(session *sysservice.HttpSession) {
session.SetHeader("a","b")
session.Write([]byte("this is a test"))
v,_:=session.Query("a")
v2,_:=session.Query("b")
fmt.Print(string(session.GetBody()),"\n",v,"\n",v2)
}
func (slf *GateService) HttpTestPost(session *sysservice.HttpSession) {
session.SetHeader("a","b")
v,_:=session.Query("a")
v2,_:=session.Query("b")
byteBody := session.GetBody()
fmt.Print(string(session.GetBody()),"\n",v,"\n",v2)
testa := struct {
AA int `json:"aa"`
BB string `json:"bb"`
}{}
json.Unmarshal(byteBody, &testa)
fmt.Println(testa)
testa.AA = 100
testa.BB = "this is a test"
session.WriteJsonDone(http.StatusOK,"asdasda")
}
func (slf *GateService) OnConnected(clientid uint64){
fmt.Printf("client id %d connected",clientid)
}
func (slf *GateService) OnDisconnected(clientid uint64){
fmt.Printf("client id %d disconnected",clientid)
}
func (slf *GateService) OnWSConnected(clientid uint64){
fmt.Printf("client id %d connected",clientid)
}
func (slf *GateService) OnWSDisconnected(clientid uint64){
fmt.Printf("client id %d disconnected",clientid)
}