bihuisong 1 yıl önce
ebeveyn
işleme
ab95738bf5

+ 28 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/visual/PageDataViewController.java

@@ -0,0 +1,28 @@
+package com.ruoyi.web.controller.visual;
+
+
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.system.service.IWebsiteAvailabilityMonitorService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+
+@RestController
+@RequestMapping("/view/")
+public class PageDataViewController {
+
+    @Autowired
+    private IWebsiteAvailabilityMonitorService websiteAvailabilityMonitorService;
+
+
+    /**
+     * 网站可用性实时监测
+     */
+    @PostMapping("getWebsiteAvailabilityMonitor")
+    @ResponseBody
+    public Result<?> getWebsiteAvailabilityMonitor() {
+        return Result.ok(websiteAvailabilityMonitorService.selectWebsiteAvailabilityMonitorList());
+    }
+
+
+}

+ 32 - 0
ruoyi-admin/src/main/resources/static/js/socket.js

@@ -0,0 +1,32 @@
+// 创建 WebSocket 对象并连接到服务器
+var socket = new WebSocket("ws://127.0.0.1:16006/ws");
+
+// 当与服务器成功建立连接时触发该事件
+socket.onopen = function() {
+    console.log("已经与服务器建立了连接。");
+};
+
+// 当收到来自服务器的消息时触发该事件
+socket.onmessage = function(event) {
+    var message = event.data; // 获取从服务器传输过来的数据
+    console.log("收到服务器的消息:", message);
+};
+
+// 当与服务器断开连接时触发该事件
+socket.onclose = function() {
+    console.log("与服务器的连接已关闭。");
+};
+
+// 向服务器发送消息
+function sendMessageToServer(message) {
+    if (socket.readyState === WebSocket.OPEN) {
+        socket.send(message);
+    } else {
+        console.error("无法发送消息,因为与服务器的连接未打开或已关闭。");
+    }
+}
+
+// 关闭与服务器的连接
+function closeConnectionWithServer() {
+    socket.close();
+}

+ 1 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShiroConfig.java

@@ -296,6 +296,7 @@ public class ShiroConfig
         filterChainDefinitionMap.put("/logout", "logout");
         // 不需要拦截的访问
         filterChainDefinitionMap.put("/login", "anon,captchaValidate");
+        filterChainDefinitionMap.put("/ws/**", "anon,captchaValidate");
         filterChainDefinitionMap.put("/jwt/login", "anon");
         // 注册相关
         filterChainDefinitionMap.put("/register", "anon,captchaValidate");

+ 17 - 25
ruoyi-framework/src/main/java/com/ruoyi/framework/websocket/WebSocketServer.java

@@ -7,19 +7,19 @@ import javax.websocket.OnMessage;
 import javax.websocket.OnOpen;
 import javax.websocket.Session;
 import javax.websocket.server.ServerEndpoint;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
 /**
  * websocket 消息处理
- * 
+ *
  * @author ruoyi
  */
 @Component
-@ServerEndpoint("/websocket/message")
-public class WebSocketServer
-{
+@ServerEndpoint("/ws")
+public class WebSocketServer {
     /**
      * WebSocketServer 日志控制器
      */
@@ -36,24 +36,20 @@ public class WebSocketServer
      * 连接建立成功调用的方法
      */
     @OnOpen
-    public void onOpen(Session session) throws Exception
-    {
+    public void onOpen(Session session) throws Exception {
         boolean semaphoreFlag = false;
         // 尝试获取信号量
         semaphoreFlag = SemaphoreUtils.tryAcquire(socketSemaphore);
-        if (!semaphoreFlag)
-        {
+        if (!semaphoreFlag) {
             // 未获取到信号量
-            LOGGER.error("\n 当前在线人数超过限制数- {}", socketMaxOnlineCount);
+            LOGGER.error("\n 当前在线人数超过限制数: {}", socketMaxOnlineCount);
             WebSocketUsers.sendMessageToUserByText(session, "当前在线人数超过限制数:" + socketMaxOnlineCount);
             session.close();
-        }
-        else
-        {
+        } else {
             // 添加用户
             WebSocketUsers.put(session.getId(), session);
-            LOGGER.info("\n 建立连接 - {}", session);
-            LOGGER.info("\n 当前人数 - {}", WebSocketUsers.getUsers().size());
+            LOGGER.info("\n 建立连接 : {}", session);
+            LOGGER.info("\n 当前人数 : {}", WebSocketUsers.getUsers().size());
             WebSocketUsers.sendMessageToUserByText(session, "连接成功");
         }
     }
@@ -62,9 +58,8 @@ public class WebSocketServer
      * 连接关闭时处理
      */
     @OnClose
-    public void onClose(Session session)
-    {
-        LOGGER.info("\n 关闭连接 - {}", session);
+    public void onClose(Session session) {
+        LOGGER.info("\n 关闭连接 : {}", session);
         // 移除用户
         WebSocketUsers.remove(session.getId());
         // 获取到信号量则需释放
@@ -75,16 +70,14 @@ public class WebSocketServer
      * 抛出异常时处理
      */
     @OnError
-    public void onError(Session session, Throwable exception) throws Exception
-    {
-        if (session.isOpen())
-        {
+    public void onError(Session session, Throwable exception) throws Exception {
+        if (session.isOpen()) {
             // 关闭连接
             session.close();
         }
         String sessionId = session.getId();
-        LOGGER.info("\n 连接异常 - {}", sessionId);
-        LOGGER.info("\n 异常信息 - {}", exception);
+        LOGGER.info("\n 连接异常 : {}", sessionId);
+        LOGGER.info("\n 异常信息 : {}", exception);
         // 移出用户
         WebSocketUsers.remove(sessionId);
         // 获取到信号量则需释放
@@ -95,8 +88,7 @@ public class WebSocketServer
      * 服务器接收到客户端消息时调用的方法
      */
     @OnMessage
-    public void onMessage(String message, Session session)
-    {
+    public void onMessage(String message, Session session) {
         String msg = message.replace("你", "我").replace("吗", "");
         WebSocketUsers.sendMessageToUserByText(session, msg);
     }