diff --git a/logic/controller/controller.go b/logic/controller/controller.go index 97730c28..5ba609ce 100644 --- a/logic/controller/controller.go +++ b/logic/controller/controller.go @@ -185,21 +185,17 @@ func Recv(c gnet.Conn, data player.TomeeHeader) { return } - + t := player.GetPlayer(c, data.UserID) if ok && aa != 0 { //这里实现回复错误包 cool.Loger.Error(context.Background(), aa.Code()) - c.Context().(*player.ClientData).Mu.Lock() - c.Write(data.Pack(nil)) - c.Context().(*player.ClientData).Mu.Unlock() + t.SendPack(data.Pack(nil)) + return } data.Version = "7" - //glog.Debug(context.Background(), data.CMD, "回复数据") - c.Context().(*player.ClientData).Mu.Lock() - c.Write(data.Pack(ret[0].Interface())) - c.Context().(*player.ClientData).Mu.Unlock() + t.SendPack(data.Pack(ret[0].Interface())) } diff --git a/logic/service/player/server.go b/logic/service/player/server.go index 8d9f27d6..1068cce9 100644 --- a/logic/service/player/server.go +++ b/logic/service/player/server.go @@ -39,9 +39,9 @@ func KickPlayer(userid uint32) { //踢出玩家 head := NewTomeeHeader(1001, userid) head.Result = uint32(errorcode.ErrorCodes.ErrAccountLoggedInElsewhere) //实际上这里有个问题,会造成重复保存问题 - player1.MainConn.Context().(*ClientData).Mu.Lock() - player1.SendPack(head.Pack(nil)) + player1.SendPack(head.Pack(nil)) + player1.MainConn.Context().(*ClientData).Mu.Lock() player1.MainConn.Close() player1.MainConn.Context().(*ClientData).Mu.Unlock() // clientdata.Player = player