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); - } -}