diff --git a/logic/service/player/player.go b/logic/service/player/player.go index 7f2b7e15..8917de8a 100644 --- a/logic/service/player/player.go +++ b/logic/service/player/player.go @@ -259,11 +259,12 @@ func (player1 *Player) Kick(isquit bool) { // --- 新增超时机制核心代码 --- // 设定超时时间(可根据业务需求调整,这里以3秒为例) - const kickTimeout = 3 * time.Second + const kickTimeout = 10 * time.Second select { case <-CloseChan: // 正常流程:连接关闭回调已执行,CloseChan 被关闭 case <-time.After(kickTimeout): + player1.Service.Info.Save(*player1.Info) service.NewBaseSysLogService().RecordKick(uint32(player1.Info.UserID), fmt.Errorf("踢人操作超时(超时时间:%v)", kickTimeout).Error()) // 超时处理:避免永久阻塞,可添加日志便于排查问题 // 注意:这里不会中断 CloseWithCallback 的执行,仅解除当前协程的阻塞