From d17f3eccdbeb510598a502491488160eb3ac9dd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <12574910+72wo@users.noreply.github.com> Date: Sun, 8 Feb 2026 04:58:58 +0800 Subject: [PATCH] 1 --- common/rpc/rpc.go | 2 +- common/socket/ServerEvent.go | 25 ++++++++++++------------- logic/service/player/pack.go | 20 ++------------------ 3 files changed, 15 insertions(+), 32 deletions(-) diff --git a/common/rpc/rpc.go b/common/rpc/rpc.go index a79555c88..4abc8bc48 100644 --- a/common/rpc/rpc.go +++ b/common/rpc/rpc.go @@ -27,7 +27,7 @@ func (*ServerHandler) Kick(_ context.Context, userid uint32) error { cl, ok := cool.GetClient(useid1) if !ok { - return fmt.Errorf("server not found") + return nil } cl.KickPerson(userid) //实现指定服务器踢人 return nil diff --git a/common/socket/ServerEvent.go b/common/socket/ServerEvent.go index a83b7fe82..936dc33e6 100644 --- a/common/socket/ServerEvent.go +++ b/common/socket/ServerEvent.go @@ -72,7 +72,7 @@ func (s *Server) OnClose(c gnet.Conn, err error) (action gnet.Action) { //logging.Infof("conn[%v] disconnected", c.RemoteAddr().String()) v, _ := c.Context().(*player.ClientData) - v.LF.Close() //关闭继续接受 + if v.Player != nil { v.Player.Save() //保存玩家数据 @@ -161,13 +161,9 @@ func (s *Server) OnTraffic(c gnet.Conn) (action gnet.Action) { return } - t := c.Context().(*player.ClientData) for _, msg := range messages { - if t.LF.Running() { - t.LF.Producer().Write(msg.Payload) - } - + s.onevent(c, msg.Payload) //t.OnEvent(msg.Payload) } @@ -189,13 +185,7 @@ func (s *Server) handleTCP(conn gnet.Conn) (action gnet.Action) { return gnet.Close } - - if t, ok := conn.Context().(*player.ClientData); ok { - if t.LF.Running() { - t.LF.Producer().Write(data) - } - - } + s.onevent(conn, data) if conn.InboundBuffered() > 0 { if err := conn.Wake(nil); err != nil { // wake up the connection manually to avoid missing the leftover data @@ -233,3 +223,12 @@ func handle(c gnet.Conn) { //return } + +func (s *Server) onevent(c gnet.Conn, data []byte) { + if t, ok := c.Context().(*player.ClientData); ok { + s.workerPool.Submit(func() { //提交任务 + t.OnEvent(data) + }) + + } +} diff --git a/logic/service/player/pack.go b/logic/service/player/pack.go index 8da16bc7a..a79804b98 100644 --- a/logic/service/player/pack.go +++ b/logic/service/player/pack.go @@ -13,7 +13,6 @@ import ( "fmt" "reflect" - "github.com/bruceshao/lockfree" "github.com/gobwas/ws" "github.com/gobwas/ws/wsutil" "github.com/gogf/gf/v2/os/glog" @@ -138,7 +137,7 @@ type ClientData struct { Wsmsg *WsCodec Conn gnet.Conn //SaveL sync.Once //保存锁 - LF *lockfree.Lockfree[[]byte] + //SaveDone chan struct{} } @@ -151,15 +150,7 @@ func NewClientData(c gnet.Conn) *ClientData { Conn: c, Wsmsg: &WsCodec{}, } - cd.LF = lockfree.NewLockfree[[]byte]( - 8, - cd, - lockfree.NewConditionBlockStrategy(), - ) - // 启动Lockfree - if err := cd.LF.Start(); err != nil { - panic(err) - } + return cd } @@ -217,14 +208,7 @@ func XORDecrypt(encryptedData []byte, keyStr string) []byte { return decrypted } func (h *ClientData) OnEvent(v []byte) { - defer func() { - if err := recover(); err != nil { // 恢复 panic,err 为 panic 错误值 - // 1. 打印错误信息 - cool.Logger.Error(context.TODO(), "panic 错误:", err) - - } - }() t, ok := h.Conn.Context().(*ClientData) if !ok { return