From 53cba0c887dc0177661a9ec161a9a533d2caba35 Mon Sep 17 00:00:00 2001 From: Odboy Date: Sat, 21 Feb 2026 22:34:45 +0800 Subject: [PATCH] =?UTF-8?q?refactor(websocket):=20=E4=BC=98=E5=8C=96=20Web?= =?UTF-8?q?Socket=20=E9=85=8D=E7=BD=AE=E5=92=8C=E6=B6=88=E6=81=AF=E5=A4=84?= =?UTF-8?q?=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 RedisConfiguration 中移除 CachingConfigurerSupport 继承并调整方法重写 - 为 KitWsServer 添加空消息处理逻辑,当收到 "[{}]" 消息时清理客户端连接 - 在 KitSpringBeanHolder 中将线程ID获取方式从 getId() 改为 threadId() - 为 Redis 扫描相关方法添加 SuppressWarnings 注解以处理泛型警告 --- .../cn/odboy/framework/context/KitSpringBeanHolder.java | 2 +- .../java/cn/odboy/framework/redis/KitRedisHelper.java | 6 ++++-- .../java/cn/odboy/framework/redis/RedisConfiguration.java | 4 +--- .../cn/odboy/framework/websocket/KitWsBizCodeConst.java | 6 ++++-- .../cn/odboy/framework/websocket/context/KitWsServer.java | 8 ++++++++ .../java/cn/odboy/framework/redis/RedisConfiguration.java | 1 + .../cn/odboy/framework/websocket/KitWsBizCodeConst.java | 6 ++++-- .../cn/odboy/framework/websocket/context/KitWsServer.java | 8 ++++++++ 8 files changed, 31 insertions(+), 10 deletions(-) diff --git a/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/context/KitSpringBeanHolder.java b/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/context/KitSpringBeanHolder.java index 16d4afbc..4e7f2a8d 100644 --- a/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/context/KitSpringBeanHolder.java +++ b/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/context/KitSpringBeanHolder.java @@ -162,7 +162,7 @@ public class KitSpringBeanHolder implements ApplicationContextAware, DisposableB * @return / */ default String getCallBackName() { - return Thread.currentThread().getId() + ":" + this.getClass().getName(); + return Thread.currentThread().threadId() + ":" + this.getClass().getName(); } } } diff --git a/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/redis/KitRedisHelper.java b/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/redis/KitRedisHelper.java index 31d47249..26f724e9 100644 --- a/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/redis/KitRedisHelper.java +++ b/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/redis/KitRedisHelper.java @@ -106,6 +106,7 @@ public class KitRedisHelper { * @param pattern key * @return / */ + @SuppressWarnings("all") public List scan(String pattern) { ScanOptions options = ScanOptions.scanOptions().match(pattern).build(); RedisConnectionFactory factory = redisTemplate.getConnectionFactory(); @@ -133,6 +134,7 @@ public class KitRedisHelper { * @param size 每页数目 * @return / */ + @SuppressWarnings("all") public List findKeysForPage(String patternKey, int page, int size) { ScanOptions options = ScanOptions.scanOptions().match(patternKey).build(); RedisConnectionFactory factory = redisTemplate.getConnectionFactory(); @@ -207,12 +209,12 @@ public class KitRedisHelper { * * @param pattern / */ + @SuppressWarnings("all") public void scanDel(String pattern) { ScanOptions options = ScanOptions.scanOptions().match(pattern).count(100).build(); try (Cursor cursor = redisTemplate.executeWithStickyConnection(connection -> { try { - return (Cursor) new ConvertingCursor<>( - connection.scan(options), redisTemplate.getKeySerializer()::deserialize); + return (Cursor) new ConvertingCursor<>(connection.scan(options), redisTemplate.getKeySerializer()::deserialize); } catch (Exception e) { throw new RuntimeException("Redis scan operation failed", e); } diff --git a/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/redis/RedisConfiguration.java b/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/redis/RedisConfiguration.java index 788295a9..3a798da3 100644 --- a/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/redis/RedisConfiguration.java +++ b/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/redis/RedisConfiguration.java @@ -26,7 +26,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; import org.springframework.cache.Cache; -import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.interceptor.CacheErrorHandler; import org.springframework.cache.interceptor.KeyGenerator; @@ -50,7 +49,7 @@ import java.util.Map; @Configuration @EnableCaching @AutoConfigureBefore(RedisAutoConfiguration.class) -public class RedisConfiguration extends CachingConfigurerSupport { +public class RedisConfiguration { @Autowired private AppProperties properties; @@ -103,7 +102,6 @@ public class RedisConfiguration extends CachingConfigurerSupport { * 自定义缓存key生成策略 */ @Bean - @Override public KeyGenerator keyGenerator() { return (target, method, params) -> { Map container = new HashMap<>(8); diff --git a/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/websocket/KitWsBizCodeConst.java b/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/websocket/KitWsBizCodeConst.java index 1b758a58..c656fef5 100644 --- a/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/websocket/KitWsBizCodeConst.java +++ b/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/websocket/KitWsBizCodeConst.java @@ -22,6 +22,8 @@ package cn.odboy.framework.websocket; */ public interface KitWsBizCodeConst { - String AutomaticPush = "100"; // 主动推送 - String IM = "101"; // 实时聊天 + // 主动推送 + String AutomaticPush = "100"; + // 实时聊天 + String IM = "101"; } diff --git a/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/websocket/context/KitWsServer.java b/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/websocket/context/KitWsServer.java index a29765a9..c5c259c4 100644 --- a/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/websocket/context/KitWsServer.java +++ b/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/websocket/context/KitWsServer.java @@ -61,6 +61,14 @@ public class KitWsServer { */ @OnMessage public void onMessage(String message, Session session) throws IOException { + if ("[{}]".equals(message)){ + try { + KitWsClientManager.removeClient(this.sid); + } catch (Exception e) { + log.error("WebSocket onClose error, sid={}", this.sid, e); + } + return; + } KitWsMessage wsMessage = JSON.parseObject(message, KitWsMessage.class); // String bizCode = wsMessage.getBizCode(); // Object data = wsMessage.getData(); diff --git a/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/redis/RedisConfiguration.java b/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/redis/RedisConfiguration.java index 3e2132cf..6dadacc0 100644 --- a/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/redis/RedisConfiguration.java +++ b/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/redis/RedisConfiguration.java @@ -126,6 +126,7 @@ public class RedisConfiguration extends CachingConfigurerSupport { } @Bean + @Override public CacheErrorHandler errorHandler() { return new SimpleCacheErrorHandler() { @Override diff --git a/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/websocket/KitWsBizCodeConst.java b/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/websocket/KitWsBizCodeConst.java index 1b758a58..c656fef5 100644 --- a/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/websocket/KitWsBizCodeConst.java +++ b/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/websocket/KitWsBizCodeConst.java @@ -22,6 +22,8 @@ package cn.odboy.framework.websocket; */ public interface KitWsBizCodeConst { - String AutomaticPush = "100"; // 主动推送 - String IM = "101"; // 实时聊天 + // 主动推送 + String AutomaticPush = "100"; + // 实时聊天 + String IM = "101"; } diff --git a/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/websocket/context/KitWsServer.java b/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/websocket/context/KitWsServer.java index 8b425453..1e042ac1 100644 --- a/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/websocket/context/KitWsServer.java +++ b/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/websocket/context/KitWsServer.java @@ -66,6 +66,14 @@ public class KitWsServer { */ @OnMessage public void onMessage(String message, Session session) throws IOException { + if ("[{}]".equals(message)){ + try { + KitWsClientManager.removeClient(this.sid); + } catch (Exception e) { + log.error("WebSocket onClose error, sid={}", this.sid, e); + } + return; + } KitWsMessage wsMessage = JSON.parseObject(message, KitWsMessage.class); // String bizCode = wsMessage.getBizCode(); // Object data = wsMessage.getData();