| | |
| | | package com.ruoyi.system.websocket; |
| | | |
| | | import com.ruoyi.system.api.util.WebSocketUsers; |
| | | import com.ruoyi.common.core.utils.JwtUtils; |
| | | import java.util.concurrent.Semaphore; |
| | | import javax.websocket.OnClose; |
| | | import javax.websocket.OnError; |
| | |
| | | * @作者 ruoyi |
| | | */ |
| | | @Component |
| | | @ServerEndpoint("/websocket/message/{clientType}") |
| | | @ServerEndpoint("/websocket/message/{clientType}/{accessToken}") |
| | | public class WebSocketServer { |
| | | |
| | | private static final Logger LOGGER = LoggerFactory.getLogger(WebSocketServer.class); |
| | |
| | | private static Semaphore socketSemaphore = new Semaphore(socketMaxOnlineCount); |
| | | |
| | | @OnOpen |
| | | public void onOpen(Session session, @PathParam("clientType") Integer clientType) |
| | | public void onOpen(Session session, @PathParam("clientType") Integer clientType, |
| | | @PathParam("accessToken") String accessToken) |
| | | throws Exception { |
| | | boolean semaphoreFlag = false; |
| | | semaphoreFlag = SemaphoreUtils.tryAcquire(socketSemaphore); |
| | |
| | | "当前在线人数超过限制数:" + socketMaxOnlineCount); |
| | | session.close(); |
| | | } else { |
| | | WebSocketUsers.put(session.getId(), session, clientType); |
| | | 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, "连接成功"); |
| | | } |
| | | } |
| | | |