From a45ef0534356b00a0b4a3f5888b74c900b83978b Mon Sep 17 00:00:00 2001
From: rentaiming <806181662@qq.com>
Date: 星期日, 14 七月 2024 15:15:35 +0800
Subject: [PATCH] 用户端拍卖修改
---
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/websocket/WebSocketServer.java | 54 +++++++++++++++++-------------------------------------
1 files changed, 17 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..ee679e8 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
@@ -6,92 +6,72 @@
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}")
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)
+ 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);
+ WebSocketUsers.put(session.getId(), session, clientType);
+
+ 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