fix(controller): 优化数据发送逻辑,避免并发写冲突

将原先直接操作连接上下文并加锁的写法,
改为通过 player 实例封装的 SendPack 方法发送数据,
提高代码可维护性和安全性。

同时调整了 service 层踢出玩家时锁的获取顺序,
确保在关闭连接前
This commit is contained in:
2025-10-14 14:25:57 +08:00
parent 600fc29cbd
commit 68d1a1355e
2 changed files with 6 additions and 10 deletions

View File

@@ -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