diff --git a/common/socket/ServerEvent.go b/common/socket/ServerEvent.go index 2a71bda0b..f057dc976 100644 --- a/common/socket/ServerEvent.go +++ b/common/socket/ServerEvent.go @@ -3,6 +3,8 @@ package socket import ( "context" "log" + "sync/atomic" + "time" "blazing/common/data/entity" @@ -12,13 +14,15 @@ import ( ) func (s *Server) Boot() error { - err := gnet.Run(s, s.addr, + err := gnet.Run(s, s.network+"://"+s.addr, gnet.WithMulticore(true), + gnet.WithTicker(true), gnet.WithSocketRecvBuffer(s.bufferSize)) if err != nil { return err } - + // err := gnet.Run(s, s.network+"://"+s.addr, gnet.WithMulticore(s.multicore)) + // logging.Infof("server exits with error: %v", err) return nil } @@ -30,7 +34,8 @@ func (s *Server) Stop() error { } func (s *Server) OnClose(c gnet.Conn, _ error) (action gnet.Action) { - + atomic.AddInt64(&s.connected, -1) + //logging.Infof("conn[%v] disconnected", c.RemoteAddr().String()) v := c.Context().(*entity.ClientData) t := v.GetPlayer() if t != nil { @@ -42,6 +47,10 @@ func (s *Server) OnClose(c gnet.Conn, _ error) (action gnet.Action) { //关闭连接 return } +func (s *Server) OnTick() (delay time.Duration, action gnet.Action) { + logging.Infof("[connected-count=%v]", atomic.LoadInt64(&s.connected)) + return 3 * time.Second, gnet.None +} func (s *Server) OnBoot(eng gnet.Engine) gnet.Action { s.eng = eng @@ -50,6 +59,12 @@ func (s *Server) OnBoot(eng gnet.Engine) gnet.Action { return gnet.None } +func (s *Server) OnOpen(_ gnet.Conn) (out []byte, action gnet.Action) { + atomic.AddInt64(&s.connected, 1) + + return nil, gnet.None +} + func (s *Server) OnTraffic(conn gnet.Conn) (action gnet.Action) { if conn.Context() == nil { conn.SetContext(entity.NewClientData()) //注入data @@ -96,11 +111,6 @@ func (s *Server) parser(c gnet.Conn, line []byte) { //todo 这里待实现注入player实体 s.handler.Handle(c, line) } -func (s *Server) Start() { - - err := gnet.Run(s, s.network+"://"+s.addr, gnet.WithMulticore(s.multicore)) - logging.Infof("server exits with error: %v", err) -} // CROSS_DOMAIN 定义跨域策略文件内容 const CROSS_DOMAIN = "\x00" diff --git a/common/socket/ServerOption.go b/common/socket/ServerOption.go index 48f7fa69f..606231df4 100644 --- a/common/socket/ServerOption.go +++ b/common/socket/ServerOption.go @@ -13,6 +13,7 @@ type Server struct { gnet.BuiltinEventEngine eng gnet.Engine addr string + connected int64 network string multicore bool bufferSize int diff --git a/logic/controller/controller.go b/logic/controller/controller.go index fddae9337..d0424a8fd 100644 --- a/logic/controller/controller.go +++ b/logic/controller/controller.go @@ -24,6 +24,7 @@ import ( var Maincontroller = NewController() //注入service // 分发cmd逻辑实现Controller type Controller struct { + //connected int64 //统计连接数 Port uint32 RPCClient struct { Kick func(int32) error diff --git a/logic/controller/login.go b/logic/controller/login.go index 5141b0e40..fc065eb85 100644 --- a/logic/controller/login.go +++ b/logic/controller/login.go @@ -18,6 +18,7 @@ func (h *Controller) Login(data login.LoginSidInfo, c gnet.Conn) []byte { //这 h.RPCClient.UserLogin(int32(h.Port), int32(data.Head.UserID)) //初始化用户登录 service.SetPlayer(c, data.Head.UserID) + } t1, _ := hex.DecodeString("0000045D37000003E9000186A600000000000186A6683F89CF6E69656F0000000000000000000000000008000F00000000000000000000000000000000000000000000000000000001000001DB0000018B000000000000A8C000000000000000000000000000000000000000080001388000000001000000017FFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030000000000000000000000000000000000000064000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001FFFFFFFF000000004E4F4E4F0000000000000000000000000000000000000001000000010000000100000001000000010000000100000001000000000003030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030000000100000064000000000000000000000000000000000000001F000000000000006400000000000093F4000093F4000000D5000000F7000000AD00000088000000920000008C0000009C00000000000000000000000000000000000000000000000000000004000027900000001B00004E6200000014000028380000002800004E3E0000002368493DC60000000000000000000000000000000000000000000100000000000000A937000007D1000186A600000000000186A66E69656F00000000000000000000000000000000000000000000000F0000000000000000000001DB0000018B0000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000001000000000000000000000000000000000000000000000000000000000000000000000000") diff --git a/logic/server.go b/logic/server.go index 1eaee018c..301f7898d 100644 --- a/logic/server.go +++ b/logic/server.go @@ -80,14 +80,23 @@ func Start(serverid uint32) { //go rpc.StartClient(uint16(serverid), &controller.Maincontroller) service.NewLoginServiceService().SetServerID(serverid, gconv.Uint16(port), t) - socket.NewServer(socket.WithCORS(), socket.WithPort(port), socket.WithSocketHandler(head)).Start() + socket. + NewServer( + socket.WithCORS(), + socket.WithPort(port), + + socket.WithSocketHandler(head)). + Boot() } else { go rpc.StartServer() //go rpcserver() //对login tcp启动 //ants.Submit(rpcserver) - socket.NewServer(socket.WithCORS(), socket.WithPort(defaultPort), socket.WithSocketHandler(head)).Start() + socket.NewServer( + socket.WithCORS(), + socket.WithPort(defaultPort), + socket.WithSocketHandler(head)).Boot() } }