diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/config/SecurityConfig.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/config/SecurityConfig.java index 54d938a..8f417bd 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/config/SecurityConfig.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/config/SecurityConfig.java @@ -60,6 +60,7 @@ public class SecurityConfig { urlWhiteList.add("/xymanager/swagger-ui.html"); urlWhiteList.add("/xymanager/swagger-resources/**"); urlWhiteList.add("/xymanager/*/api-docs"); + urlWhiteList.add("/xymanager/websocket/**"); urlWhiteList.add("/test/**"); urlWhiteList.add("/error"); urlWhiteList.add("/test/**"); diff --git a/xymanager_framework/pom.xml b/xymanager_framework/pom.xml index 72171e2..f9d693c 100644 --- a/xymanager_framework/pom.xml +++ b/xymanager_framework/pom.xml @@ -40,10 +40,6 @@ ch.qos.logback logback-classic - - org.springframework.boot - spring-boot-starter-tomcat - @@ -51,6 +47,10 @@ org.springframework.boot spring-boot-starter-aop + + org.springframework.boot + spring-boot-starter-websocket + diff --git a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/config/WebSocketConfig.java b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/config/WebSocketConfig.java new file mode 100644 index 0000000..bcbf951 --- /dev/null +++ b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/config/WebSocketConfig.java @@ -0,0 +1,20 @@ +package com.shxy.xymanager_framework.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.socket.server.standard.ServerEndpointExporter; + +@Configuration +public class WebSocketConfig { + /** + * ServerEndpointExporter 作用 + * + * 这个Bean会自动注册使用@ServerEndpoint注解声明的websocket endpoint + * + * @return ServerEndpointExporter + */ + @Bean + public ServerEndpointExporter serverEndpointExporter() { + return new ServerEndpointExporter(); + } +} diff --git a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/socket/WebSocketServer.java b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/socket/WebSocketServer.java new file mode 100644 index 0000000..8bb7da3 --- /dev/null +++ b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/socket/WebSocketServer.java @@ -0,0 +1,63 @@ +package com.shxy.xymanager_framework.socket; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.websocket.*; +import javax.websocket.server.ServerEndpoint; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +@ServerEndpoint(value = "/websocket") +@Component +@Slf4j +public class WebSocketServer { + + private static List sessionPools = new ArrayList<>(); + + @OnOpen + public void onOpen(Session session) { + sessionPools.add(session); + log.info("当前socket连接数" + sessionPools.size()); + } + + @OnClose + public void onClose(Session session) { + sessionPools.remove(session); + log.info("剩余socket连接数" + sessionPools.size()); + } + + public void sendMessage(String message) { + Iterator it = sessionPools.listIterator(); + while (it.hasNext()) { + Session session = it.next(); + try { + session.getBasicRemote().sendText(message); + } catch (IOException ignore) { + } + } + } + + //收到客户端信息 + @OnMessage + public void onMessage(Session session, String message) { + try { + if (!"1".equals(message)) { + message = message.replaceAll("吗", "") + .replaceAll("你", "我") + .replaceAll("?", "!") + .replaceAll("\\?", "!"); + session.getBasicRemote().sendText(message); + } + } catch (IOException ignore) { + } + } + + //错误时调用 + @OnError + public void onError(Session session, Throwable throwable) { + } + +} diff --git a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/MntnCheckTask.java b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/MntnCheckTask.java index 88c5f25..054b561 100644 --- a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/MntnCheckTask.java +++ b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/MntnCheckTask.java @@ -4,6 +4,7 @@ import com.shxy.xymanager_common.entity.MntnRawReportsExample; import com.shxy.xymanager_common.entity.Terminals; import com.shxy.xymanager_common.util.DingTalkPushUtil; import com.shxy.xymanager_dao.dao.MntnRawReportsMapper; +import com.shxy.xymanager_framework.socket.WebSocketServer; import com.shxy.xymanager_service.service.CacheService; import com.shxy.xymanager_service.service.NewCacheService; import lombok.extern.slf4j.Slf4j; @@ -33,6 +34,8 @@ public class MntnCheckTask { NewCacheService newCacheService; @Autowired private CacheService cacheService; + @Resource + WebSocketServer webSocketServer; private int shutdown = 0; private List alertList = new ArrayList<>(); @@ -52,6 +55,7 @@ public class MntnCheckTask { if (shutdown == 0 && alertList.size() > 0) { String str = alertList.get(0); alertList.remove(0); + webSocketServer.sendMessage(str); DingTalkPushUtil.pushText(str); } }