This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"time"
|
||||
|
||||
@@ -212,6 +213,11 @@ func (s *InfoService) Kick(id uint32) error {
|
||||
_ = share.ShareManager.DeleteUserOnline(id)
|
||||
return nil
|
||||
}
|
||||
if isDisconnectedLogicReverseClientError(callErr) {
|
||||
_ = share.ShareManager.DeleteUserOnline(id)
|
||||
cool.DeleteClientOnly(useid2)
|
||||
return nil
|
||||
}
|
||||
return callErr
|
||||
case <-time.After(3 * time.Second):
|
||||
// 防止异常场景下无限等待;超时不按成功处理
|
||||
@@ -227,6 +233,16 @@ func (s *InfoService) Kick(id uint32) error {
|
||||
}
|
||||
}
|
||||
|
||||
func isDisconnectedLogicReverseClientError(err error) bool {
|
||||
if err == nil {
|
||||
return false
|
||||
}
|
||||
errText := err.Error()
|
||||
return strings.Contains(errText, "websocket routine exiting") ||
|
||||
strings.Contains(errText, "sendRequest failed") ||
|
||||
strings.Contains(errText, "closed out channel")
|
||||
}
|
||||
|
||||
// saveToLocalFile 兜底保存:将数据写入本地lose文件夹
|
||||
func (s *InfoService) saveToLocalFile(player *model.PlayerInfo, err error) {
|
||||
// 1. 创建lose文件夹(如果不存在)
|
||||
|
||||
Reference in New Issue
Block a user