From fe82f87200e1b65092f4937af4179615eb111ab4 Mon Sep 17 00:00:00 2001 From: liyi Date: Tue, 8 Apr 2025 14:35:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=B0=83=E6=95=B4=E5=A4=9A=E4=B8=AA?= =?UTF-8?q?=E5=AF=B9=E8=AE=B2=E8=AF=B7=E6=B1=82=E6=97=B6=E4=B8=8D=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handle/impl/udp_talk_request_handler.dart | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lib/talk/starChart/handle/impl/udp_talk_request_handler.dart b/lib/talk/starChart/handle/impl/udp_talk_request_handler.dart index 06b79ad6..be2f4565 100644 --- a/lib/talk/starChart/handle/impl/udp_talk_request_handler.dart +++ b/lib/talk/starChart/handle/impl/udp_talk_request_handler.dart @@ -25,8 +25,24 @@ class UdpTalkRequestHandler extends ScpMessageBaseHandle RxString currentLanguage = CurrentLocaleTool.getCurrentLocaleString().obs; // 当前选择语言 + // 添加上次处理请求的时间戳 + int _lastRequestTime = 0; + @override void handleReq(ScpMessage scpMessage) async { + + final currentTime = DateTime.now().millisecondsSinceEpoch; + // 确保与上次请求间隔至少1秒 + if (currentTime - _lastRequestTime < 1000) { + // 如果间隔小于1秒,直接拒绝请求 + replyErrorMessage(scpMessage); + AppLog.log('对讲请求过于频繁,已拒绝'); + return; + } + + // 更新最后处理时间 + _lastRequestTime = currentTime; + // 判断是否登录账户 final loginData = await Storage.getLoginData(); @@ -47,6 +63,7 @@ class UdpTalkRequestHandler extends ScpMessageBaseHandle } else { // 拒绝接听,回复失败 replyErrorMessage(scpMessage); + AppLog.log('正在接听,回复拒绝'); } }