From fbe7d1b23d2511a9bb0caa221315da3cd2b14ff2 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Wed, 6 Nov 2019 13:52:23 +0800 Subject: [PATCH] =?UTF-8?q?=E9=BB=91=E5=90=8D=E5=8D=95=20=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/network/server/Blocker.java | 26 +++++++++++++++++-- .../network/server/ProtocolsManager.java | 21 +++------------ 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/network/server/Blocker.java b/serverlogic/src/main/java/com/ljsd/jieling/network/server/Blocker.java index 84eda29dc..10c828fa4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/network/server/Blocker.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/network/server/Blocker.java @@ -4,18 +4,34 @@ import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.util.MessageUtil; +import io.netty.util.internal.ConcurrentSet; +import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; /** - * Description: 进服前检查 + * Description: 检查 * Author: zsx * CreateDate: 2019/11/5 14:42 */ public class Blocker { public static final AtomicInteger maxAllowedOnlineAccountCount = new AtomicInteger(5000); + private static ConcurrentSet forbidLogin = new ConcurrentSet<>(); + public static boolean checkForbidUser(ISession iSession){ + if(forbidLogin.size()<1){ + return false; + } + if(iSession!=null) { + if(forbidLogin.contains(iSession.getUid())){ + MessageUtil.sendErrorCode(iSession, ErrorCode.reloginCode, "您已被踢下线!"); + iSession.setOfflineType(ErrorCode.reloginCode); + return true; + } + } + return false; + } public static boolean checkFlow(ISession iSession){ if(iSession!=null) { @@ -28,6 +44,12 @@ public class Blocker { return true; } + static Set getForbidLogin() { + return forbidLogin; + } - + static void setForbidLogin(Set forbidLogin) { + Blocker.forbidLogin.clear(); + Blocker.forbidLogin.addAll(forbidLogin); + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/network/server/ProtocolsManager.java b/serverlogic/src/main/java/com/ljsd/jieling/network/server/ProtocolsManager.java index e4a55dc36..fd5b37d41 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/network/server/ProtocolsManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/network/server/ProtocolsManager.java @@ -54,7 +54,6 @@ public class ProtocolsManager implements ProtocolsAbstract { public static Map gameMessageForLogin = new ConcurrentHashMap<>(); private Map handlers = new HashMap<>(); private static ClassLoader classLoader = GameApplication.class.getClassLoader(); - private static Set forbidLogin = new HashSet<>(); public final int HANDLER_THREAD_NUM = 50; public HandlerLogicThread[] handlerThreads = new HandlerLogicThread[HANDLER_THREAD_NUM]; @@ -202,7 +201,7 @@ public class ProtocolsManager implements ProtocolsAbstract { if (checkIndex(session,packetNetData) != 0){ return; } - boolean b = checkForbidUser(session); + boolean b = Blocker.checkForbidUser(session); if(b){ return; } @@ -480,31 +479,19 @@ public class ProtocolsManager implements ProtocolsAbstract { } - public boolean checkForbidUser(ISession iSession){ - if(forbidLogin.size()<1){ - return false; - } - if(iSession!=null) { - if(forbidLogin.contains(iSession.getUid())){ - MessageUtil.sendErrorCode(iSession, ErrorCode.reloginCode, "您已被踢下线!"); - iSession.setOfflineType(ErrorCode.reloginCode); - return true; - } - } - return false; - } + public void minuteCheckForbidUser(){ RedisUtil redisUtil = RedisUtil.getInstence(); String key = RedisKey.getKey(RedisKey.FORBID_LOGIN, "", false); if(!redisUtil.hasKey(key)){ - forbidLogin.clear(); + Blocker.getForbidLogin().clear(); return; } Map forbidMap = redisUtil.getMapValues(RedisKey.FORBID_LOGIN, "", Integer.class, Integer.class); if(forbidMap==null||forbidMap.size()<1){ return; } - forbidLogin = forbidMap.keySet(); + Blocker.setForbidLogin(forbidMap.keySet()); }