1
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful

This commit is contained in:
昔念
2026-04-24 23:02:28 +08:00
parent ab2928db1d
commit 1efc8517e1
2 changed files with 34 additions and 0 deletions

View File

@@ -7,6 +7,7 @@ import (
"context"
"fmt"
"log"
"strings"
"time"
config "blazing/modules/config/service"
@@ -20,6 +21,18 @@ type ServerHandler struct{}
const kickForwardTimeout = 3 * time.Second
// A 服强关留下僵尸在线状态B 服可以通过 login 清理后登录。
// login 服不可用B 服不会放行,仍提示系统忙。
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")
}
// 实现踢人
func (*ServerHandler) Kick(_ context.Context, userid uint32) error {
useid1, err := share.ShareManager.GetUserOnline(userid)
@@ -57,6 +70,11 @@ func (*ServerHandler) Kick(_ context.Context, userid uint32) error {
cool.DeleteClientOnly(useid2)
return nil
}
if isDisconnectedLogicReverseClientError(callErr) {
_ = share.ShareManager.DeleteUserOnline(userid)
cool.DeleteClientOnly(useid2)
return nil
}
// 仍在线则返回失败,不按成功处理
return callErr