package com.ard.route.websocket.handler; import com.ard.route.websocket.MiWebSocketSessionManager; import com.ard.route.websocket.utils.MiWebSocketUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.web.socket.CloseStatus; import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketSession; import org.springframework.web.socket.handler.TextWebSocketHandler; @Component @Slf4j public class MiWebSocketHandler extends TextWebSocketHandler { @Override public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { // 处理接收到的消息 String payload = message.getPayload(); log.info("【mi_websocket】Received message: " + payload); log.info("【mi_websocket】size: " + MiWebSocketSessionManager.getOnlineUserCount()); } @Override public void afterConnectionEstablished(WebSocketSession session) { String userIdStr = (String) session.getAttributes().get("userId"); if (userIdStr == null || userIdStr.isBlank()) { return; } Long userId = Long.parseLong(userIdStr); log.info("【mi_websocket】Connected: " + session.getId()); MiWebSocketSessionManager.addSession(userId, session); log.info("【mi_websocket】size: " + MiWebSocketSessionManager.getOnlineUserCount()); } @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) { String userIdStr = (String) session.getAttributes().get("userId"); if (userIdStr == null || userIdStr.isBlank()) { return; } Long userId = Long.parseLong(userIdStr); MiWebSocketSessionManager.removeSession(userId); log.info("【mi_websocket】Disconnected: " + session.getId()); MiWebSocketSessionManager.removeSession(userId); log.info("【mi_websocket】size: " + MiWebSocketSessionManager.getOnlineUserCount()); } }