From 562699fa6d0c279fe0f4f81ce87c336a34a3fb91 Mon Sep 17 00:00:00 2001
From: hjl <1657978663@qq.com>
Date: 星期二, 23 七月 2024 14:32:23 +0800
Subject: [PATCH] feat: 数据迁移;netty通信;bug修改

---
 ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/sorcket/WebSocketServer.java |   51 ++++++++++++++++++++++++++++++---------------------
 1 files changed, 30 insertions(+), 21 deletions(-)

diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/sorcket/WebSocketServer.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/sorcket/WebSocketServer.java
index a7b5e40..98f4cfe 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/sorcket/WebSocketServer.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/sorcket/WebSocketServer.java
@@ -7,15 +7,15 @@
 
 import javax.websocket.*;
 import javax.websocket.server.PathParam;
-import javax.websocket.server.ServerEndpoint;
 import java.io.IOException;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicInteger;
 
 
 /**
  * @author hjl
  */
-@ServerEndpoint(value = "/websocket/{workerId}")
+//@ServerEndpoint(value = "/websocket/{workerId}")
 @Component
 public class WebSocketServer {
 
@@ -24,7 +24,7 @@
     /**
      * 静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
      */
-    private static int onlineCount = 0;
+    private static final AtomicInteger ONLINE_COUNT = new AtomicInteger(0);
 
     /**
      * concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象
@@ -46,22 +46,31 @@
      */
     @OnOpen
     public void onOpen(Session session, @PathParam("workerId") String workerId) {
-        this.session = session;
-        this.userId = workerId;
-        if (WEB_SOCKET_MAP.containsKey(workerId)) {
-            WEB_SOCKET_MAP.remove(workerId);
-            WEB_SOCKET_MAP.put(workerId, new WebSocketClient(session, workerId));
-            //加入set中
+        if (null != workerId && !"".equals(workerId.trim())) {
+            this.session = session;
+            this.userId = workerId;
+            if (WEB_SOCKET_MAP.containsKey(workerId)) {
+                WEB_SOCKET_MAP.remove(workerId);
+                WEB_SOCKET_MAP.put(workerId, new WebSocketClient(session, workerId));
+                //加入set中
+            } else {
+                WEB_SOCKET_MAP.put(workerId, new WebSocketClient(session, workerId));
+                //加入set中
+                addOnlineCount();
+            }
+            log.info("用户 " + workerId + " 已连接: 当前在线人数为:" + getOnlineCount());
+            try {
+                sendMessage("socket连接成功!");
+            } catch (IOException e) {
+                log.error("用户:" + workerId + ",网络异常!!!!!!");
+            }
         } else {
-            WEB_SOCKET_MAP.put(workerId, new WebSocketClient(session, workerId));
-            //加入set中
-            addOnlineCount();
-        }
-        log.info("用户 " + workerId + " 已连接: 当前在线人数为:" + getOnlineCount());
-        try {
-            sendMessage("socket连接成功!");
-        } catch (IOException e) {
-            log.error("用户:" + workerId + ",网络异常!!!!!!");
+            log.info("用户 " + workerId + " 已连接: 当前在线人数为:" + getOnlineCount());
+            try {
+                sendMessage("socket连接失败!");
+            } catch (IOException e) {
+                log.error("用户:" + workerId + ",网络异常!!!!!!");
+            }
         }
     }
 
@@ -134,14 +143,14 @@
     }
 
     public static synchronized int getOnlineCount() {
-        return onlineCount;
+        return ONLINE_COUNT.get();
     }
 
     public static synchronized void addOnlineCount() {
-        WebSocketServer.onlineCount++;
+        ONLINE_COUNT.incrementAndGet();
     }
 
     public static synchronized void subOnlineCount() {
-        WebSocketServer.onlineCount--;
+        ONLINE_COUNT.decrementAndGet();
     }
 }

--
Gitblit v1.7.1