From 01d6fa48a0de7a21988e89f71721b6b85e53b517 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期四, 06 三月 2025 16:33:53 +0800 Subject: [PATCH] 去掉资讯图片必填限制 --- ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/websocket/WebSocketServer.java | 57 ++++++++++++++++++++------------------------------------- 1 files changed, 20 insertions(+), 37 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/websocket/WebSocketServer.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/websocket/WebSocketServer.java index 306b0b4..edd6125 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/websocket/WebSocketServer.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/websocket/WebSocketServer.java @@ -1,97 +1,80 @@ package com.ruoyi.system.websocket; +import com.ruoyi.common.core.utils.JwtUtils; import java.util.concurrent.Semaphore; import javax.websocket.OnClose; import javax.websocket.OnError; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; +import javax.websocket.server.PathParam; import javax.websocket.server.ServerEndpoint; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; -import util.WebSocketUsers; /** * websocket 消息处理 * - * @author ruoyi + * @作者 ruoyi */ @Component -@ServerEndpoint("/websocket/message") +@ServerEndpoint("/websocket/message/{clientType}/{accessToken}") public class WebSocketServer { - /** - * WebSocketServer 日志控制器 - */ private static final Logger LOGGER = LoggerFactory.getLogger(WebSocketServer.class); - - /** - * 默认最多允许同时在线人数100 - */ - public static int socketMaxOnlineCount = 100; - + public static int socketMaxOnlineCount = 1000; private static Semaphore socketSemaphore = new Semaphore(socketMaxOnlineCount); - /** - * 连接建立成功调用的方法 - */ @OnOpen - public void onOpen(Session session) throws Exception { + public void onOpen(Session session, @PathParam("clientType") Integer clientType, + @PathParam("accessToken") String accessToken) + throws Exception { boolean semaphoreFlag = false; - // 尝试获取信号量 semaphoreFlag = SemaphoreUtils.tryAcquire(socketSemaphore); if (!semaphoreFlag) { - // 未获取到信号量 LOGGER.error("\n 当前在线人数超过限制数- {}", socketMaxOnlineCount); WebSocketUsers.sendMessageToUserByText(session, "当前在线人数超过限制数:" + socketMaxOnlineCount); session.close(); } else { - // 添加用户 - WebSocketUsers.put(session.getId(), session); - LOGGER.info("\n 建立连接 - {}", session); + String userId = JwtUtils.getUserId(accessToken); + WebSocketUsers.put(session.getId(), session, clientType, Long.parseLong(userId)); + + if (clientType == 1) { + LOGGER.info("\n 用户端建立连接 - {}", session); + WebSocketUsers.sendMessageToUserByText(session, "用户端连接成功"); + } else if (clientType == 2) { + LOGGER.info("\n 拍卖师端建立连接 - {}", session); + WebSocketUsers.sendMessageToUserByText(session, "拍卖师端连接成功"); + } LOGGER.info("\n 当前人数 - {}", WebSocketUsers.getUsers().size()); - WebSocketUsers.sendMessageToUserByText(session, "连接成功"); } } - /** - * 连接关闭时处理 - */ @OnClose public void onClose(Session session) { LOGGER.info("\n 关闭连接 - {}", session); - // 移除用户 WebSocketUsers.remove(session.getId()); - // 获取到信号量则需释放 SemaphoreUtils.release(socketSemaphore); } - /** - * 抛出异常时处理 - */ @OnError 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); - // 移出用户 WebSocketUsers.remove(sessionId); - // 获取到信号量则需释放 SemaphoreUtils.release(socketSemaphore); } - /** - * 服务器接收到客户端消息时调用的方法 - */ @OnMessage public void onMessage(String message, Session session) { - String msg = message.replace("你", "我").replace("吗", ""); + String msg = message.replace("你", "我").replace("吗", "").replace("PING", "PONG") + .replace("ping", "pong"); WebSocketUsers.sendMessageToUserByText(session, msg); } } -- Gitblit v1.7.1