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