se-modules/se-system/pom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
se-modules/se-system/src/main/java/com/se/system/config/RestTemplateConfig.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
se-modules/se-system/src/main/java/com/se/system/config/WebSocketConfig.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
se-modules/se-system/src/main/java/com/se/system/service/WebSocketService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
se-modules/se-system/src/main/java/com/se/system/service/impl/SysStatusCtrlServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
se-modules/se-system/pom.xml
@@ -16,7 +16,6 @@ </description> <dependencies> <!-- SpringCloud Alibaba Nacos --> <dependency> <groupId>com.alibaba.cloud</groupId> @@ -130,6 +129,17 @@ <artifactId>caffeine</artifactId> <version>2.9.3</version> </dependency> <!--websocket--> <dependency> <groupId>javax.websocket</groupId> <artifactId>javax.websocket-api</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> </dependencies> <build> se-modules/se-system/src/main/java/com/se/system/config/RestTemplateConfig.java
@@ -4,8 +4,8 @@ import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; @SuppressWarnings("ALL") @Configuration @SuppressWarnings("ALL") public class RestTemplateConfig { @Bean public RestTemplate restTemplate() { se-modules/se-system/src/main/java/com/se/system/config/WebSocketConfig.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ package com.se.system.config; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import org.springframework.web.socket.server.standard.ServerEndpointExporter; @Component @SuppressWarnings("ALL") public class WebSocketConfig { @Bean public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointExporter(); } } se-modules/se-system/src/main/java/com/se/system/service/WebSocketService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,88 @@ package com.se.system.service; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import javax.websocket.*; import javax.websocket.server.ServerEndpoint; import java.io.IOException; import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.atomic.AtomicInteger; @Component @SuppressWarnings("ALL") @ServerEndpoint(value = "/ws/query") public class WebSocketService { @PostConstruct public void init() { System.out.println("websocket å è½½å®æ"); } private static final Logger log = LoggerFactory.getLogger(WebSocketService.class); private static final AtomicInteger ONLINE_COUNT = new AtomicInteger(0); private final static CopyOnWriteArraySet<Session> SESSION_SET = new CopyOnWriteArraySet<Session>(); @OnOpen public void onOpen(Session session) { SESSION_SET.add(session); int cnt = ONLINE_COUNT.incrementAndGet(); log.info("æè¿æ¥å å ¥ï¼å½åè¿æ¥æ°ä¸ºï¼{}", cnt); sendMessage(session, "è¿æ¥æå"); } @OnClose public void onClose(Session session) { SESSION_SET.remove(session); int cnt = ONLINE_COUNT.decrementAndGet(); log.info("æè¿æ¥å ³éï¼å½åè¿æ¥æ°ä¸ºï¼{}", cnt); } @OnMessage public void onMessage(String message, Session session) { log.info("æ¥èªå®¢æ·ç«¯çæ¶æ¯ï¼{}", message); sendMessage(session, "æ¶å°æ¶æ¯ï¼æ¶æ¯å 容ï¼" + message); } @OnError public void onError(Session session, Throwable error) { log.error("åçé误ï¼{}ï¼Session IDï¼ {}", error.getMessage(), session.getId()); } public static void sendMessage(Session session, String message) { try { session.getBasicRemote().sendText(String.format("%s", message)); } catch (Exception ex) { log.error("åéæ¶æ¯åºéï¼{}", ex.getMessage()); } } public static void broadCastInfo(String message) throws IOException { for (Session session : SESSION_SET) { if (session.isOpen()) { sendMessage(session, message); } } } public static void sendMessage(String message, String sessionId) throws IOException { Session session = null; for (Session s : SESSION_SET) { if (s.getId().equals(sessionId)) { session = s; break; } } if (session != null) { sendMessage(session, message); } else { log.info("æ²¡ææ¾å°ä½ æå®IDçä¼è¯ï¼{}", sessionId); } } } se-modules/se-system/src/main/java/com/se/system/service/impl/SysStatusCtrlServiceImpl.java
@@ -2,6 +2,7 @@ import java.util.List; import com.se.common.core.utils.DateUtils; import com.se.system.service.WebSocketService; import com.se.system.utils.CaffeineUtils; import com.se.system.utils.ConnectUtils; import com.se.system.utils.StringUtils; @@ -128,4 +129,9 @@ sysStatusCtrlMapper.updates(list); } private void sendMsg(String json) throws Exception { //String json = JSONObject.toJSONStringWithDateFormat(jsonObject, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue); WebSocketService.broadCastInfo(json); } }