From 4db2019d95d14ea9b38401a4185e9445725cedc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=BF=94?= Date: Sat, 14 Mar 2026 10:31:12 +0800 Subject: [PATCH] refactor: migrate WebSocket handler to manage-notify module --- novalon-manage-api/manage-notify/pom.xml | 4 ++ .../notify}/config/WebSocketConfig.java | 10 +-- .../websocket/SysWebSocketHandler.java | 18 +----- .../service/impl/WebSocketServiceImpl.java | 61 ------------------- 4 files changed, 7 insertions(+), 86 deletions(-) rename novalon-manage-api/{manage-sys/src/main/java/cn/novalon/manage/sys => manage-notify/src/main/java/cn/novalon/manage/notify}/config/WebSocketConfig.java (86%) rename novalon-manage-api/{manage-sys/src/main/java/cn/novalon/manage/sys => manage-notify/src/main/java/cn/novalon/manage/notify}/websocket/SysWebSocketHandler.java (93%) delete mode 100644 novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/core/service/impl/WebSocketServiceImpl.java diff --git a/novalon-manage-api/manage-notify/pom.xml b/novalon-manage-api/manage-notify/pom.xml index 5d2573a..373c619 100644 --- a/novalon-manage-api/manage-notify/pom.xml +++ b/novalon-manage-api/manage-notify/pom.xml @@ -26,6 +26,10 @@ org.springframework.boot spring-boot-starter-webflux + + com.fasterxml.jackson.core + jackson-databind + org.springframework.boot spring-boot-starter-test diff --git a/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/config/WebSocketConfig.java b/novalon-manage-api/manage-notify/src/main/java/cn/novalon/manage/notify/config/WebSocketConfig.java similarity index 86% rename from novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/config/WebSocketConfig.java rename to novalon-manage-api/manage-notify/src/main/java/cn/novalon/manage/notify/config/WebSocketConfig.java index f44c9ab..99197bc 100644 --- a/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/config/WebSocketConfig.java +++ b/novalon-manage-api/manage-notify/src/main/java/cn/novalon/manage/notify/config/WebSocketConfig.java @@ -1,6 +1,6 @@ -package cn.novalon.manage.sys.config; +package cn.novalon.manage.notify.config; -import cn.novalon.manage.sys.websocket.SysWebSocketHandler; +import cn.novalon.manage.notify.websocket.SysWebSocketHandler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.Ordered; @@ -12,12 +12,6 @@ import org.springframework.web.reactive.socket.server.support.WebSocketHandlerAd import java.util.HashMap; import java.util.Map; -/** - * WebSocket配置类 - * - * @author 张翔 - * @date 2026-03-13 - */ @Configuration public class WebSocketConfig { diff --git a/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/websocket/SysWebSocketHandler.java b/novalon-manage-api/manage-notify/src/main/java/cn/novalon/manage/notify/websocket/SysWebSocketHandler.java similarity index 93% rename from novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/websocket/SysWebSocketHandler.java rename to novalon-manage-api/manage-notify/src/main/java/cn/novalon/manage/notify/websocket/SysWebSocketHandler.java index 6216a40..aff55c5 100644 --- a/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/websocket/SysWebSocketHandler.java +++ b/novalon-manage-api/manage-notify/src/main/java/cn/novalon/manage/notify/websocket/SysWebSocketHandler.java @@ -1,4 +1,4 @@ -package cn.novalon.manage.sys.websocket; +package cn.novalon.manage.notify.websocket; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; @@ -14,16 +14,6 @@ import java.time.LocalDateTime; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -/** - * WebSocket处理器 - * - * 文件定义:处理WebSocket连接和消息推送 - * 涉及业务:实时消息推送、系统公告通知、用户消息 - * 算法:使用ConcurrentHashMap管理WebSocket会话,支持点对点和广播消息,添加心跳机制和超时处理 - * - * @author 张翔 - * @date 2026-03-13 - */ @Component public class SysWebSocketHandler implements WebSocketHandler { @@ -61,9 +51,6 @@ public class SysWebSocketHandler implements WebSocketHandler { .then(); } - /** - * 定时清理空闲连接 - */ @Scheduled(fixedRate = 60000) public void cleanupIdleConnections() { LocalDateTime now = LocalDateTime.now(); @@ -86,9 +73,6 @@ public class SysWebSocketHandler implements WebSocketHandler { }); } - /** - * 定时发送心跳消息 - */ @Scheduled(fixedRate = 30000) public void sendHeartbeat() { sessions.forEach((userId, session) -> { diff --git a/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/core/service/impl/WebSocketServiceImpl.java b/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/core/service/impl/WebSocketServiceImpl.java deleted file mode 100644 index cfb4210..0000000 --- a/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/core/service/impl/WebSocketServiceImpl.java +++ /dev/null @@ -1,61 +0,0 @@ -package cn.novalon.manage.sys.core.service.impl; - -import cn.novalon.manage.sys.core.service.IWebSocketService; -import cn.novalon.manage.sys.websocket.SysWebSocketHandler; -import org.springframework.stereotype.Service; -import reactor.core.publisher.Mono; - -import java.util.HashMap; -import java.util.Map; - -/** - * WebSocket服务实现类 - * - * @author 张翔 - * @date 2026-03-14 - */ -@Service -public class WebSocketServiceImpl implements IWebSocketService { - - private final SysWebSocketHandler webSocketHandler; - - public WebSocketServiceImpl(SysWebSocketHandler webSocketHandler) { - this.webSocketHandler = webSocketHandler; - } - - @Override - public Mono sendToUser(Long userId, Object message) { - return Mono.fromRunnable(() -> { - webSocketHandler.sendMessageToUser(String.valueOf(userId), message); - }); - } - - @Override - public Mono broadcast(Object message) { - return Mono.fromRunnable(() -> { - webSocketHandler.broadcastMessage(message); - }); - } - - @Override - public Mono notifyNewNotice(String noticeTitle, String noticeContent) { - Map notification = new HashMap<>(); - notification.put("type", "notice"); - notification.put("title", noticeTitle); - notification.put("content", noticeContent); - notification.put("timestamp", System.currentTimeMillis()); - - return broadcast(notification); - } - - @Override - public Mono notifyNewMessage(Long userId, String title, String content) { - Map notification = new HashMap<>(); - notification.put("type", "message"); - notification.put("title", title); - notification.put("content", content); - notification.put("timestamp", System.currentTimeMillis()); - - return sendToUser(userId, notification); - } -}