diff --git a/common/socket/ServerEvent.go b/common/socket/ServerEvent.go index 6db74c939..744766adf 100644 --- a/common/socket/ServerEvent.go +++ b/common/socket/ServerEvent.go @@ -54,17 +54,20 @@ 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().(*player.ClientData) - v.Lf.Close() //关闭lockfree + s.workerPool.Submit(func() { //TODO 这里可能存在顺序执行问题,待修复 + v.Lf.Close() //关闭lockfree + + if v.Player != nil { + //cool.Loger.Info(context.TODO(), "准备保存", v.Player.Info.UserID) + v.Player.Save() //保存玩家数据 + //cool.Loger.Info(context.TODO(), "保存完成", v.Player.Info.UserID) + if v.CloseChan != nil { + close(v.CloseChan) + } - if v.Player != nil { - //cool.Loger.Info(context.TODO(), "准备保存", v.Player.Info.UserID) - v.Player.Save() //保存玩家数据 - //cool.Loger.Info(context.TODO(), "保存完成", v.Player.Info.UserID) - if v.CloseChan != nil { - close(v.CloseChan) } - } + }) //} //关闭连接