From f7a9ab3be1dc745b2c4d33013a145a78ce8f6822 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 23 Jan 2025 17:05:48 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/external.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/server/game/external.go b/src/server/game/external.go index 35a74d59..f6d856f2 100644 --- a/src/server/game/external.go +++ b/src/server/game/external.go @@ -1,6 +1,7 @@ package game import ( + "context" "reflect" "server/GoUtil" "server/MergeConst" @@ -48,8 +49,23 @@ func HandleAdminReq(args []interface{}) { // log.Debug("admin 消息Func : %s", m.GetFunc()) AdminProcess(m.GetFunc(), []interface{}{a, buf}) } - func HandleClientReq(args []interface{}) { + // log.Debug("HandleClientReq") + // 创建一个带有超时的上下文 + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + + done := make(chan struct{}) + go HandleClientReqProcess(args) + select { + case <-ctx.Done(): + m := args[0].(*msg.ClientReq) + log.Debug("HandleClientReq func %s timed out", m.GetFunc()) + case <-done: + log.Debug("HandleClientReq completed") + } +} +func HandleClientReqProcess(args []interface{}) { if G_GameLogicPtr.SeverInfo.Status == SERVER_STATUS_CLOSE || G_GameLogicPtr.SeverInfo.Status == SERVER_STATUS_MAINTAIN { return // 服务器关闭或者维护中,不处理任何消息 }