1
13693261870
2024-12-13 b7a71b30c1c1b06a162678c90a54c8188097dc81
1
已添加2个文件
已修改3个文件
122 ■■■■■ 文件已修改
se-modules/se-system/pom.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-modules/se-system/src/main/java/com/se/system/config/RestTemplateConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-modules/se-system/src/main/java/com/se/system/config/WebSocketConfig.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-modules/se-system/src/main/java/com/se/system/service/WebSocketService.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-modules/se-system/src/main/java/com/se/system/service/impl/SysStatusCtrlServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | 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);
    }
}