diff --git a/src/main/java/com/iflytop/gd/app/ws/server/WebSocketServer.java b/src/main/java/com/iflytop/gd/app/ws/server/WebSocketServer.java index 2281004..bd27ede 100644 --- a/src/main/java/com/iflytop/gd/app/ws/server/WebSocketServer.java +++ b/src/main/java/com/iflytop/gd/app/ws/server/WebSocketServer.java @@ -1,7 +1,9 @@ package com.iflytop.gd.app.ws.server; +import com.iflytop.gd.app.service.device.DeviceStateService; import jakarta.websocket.*; import jakarta.websocket.server.ServerEndpoint; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -12,7 +14,9 @@ import java.util.Set; @Slf4j @ServerEndpoint("/ws") @Component +@RequiredArgsConstructor public class WebSocketServer { + private final DeviceStateService deviceStateService; private static final Set sessions = Collections.synchronizedSet(new HashSet<>()); @@ -22,7 +26,7 @@ public class WebSocketServer { try { session.getBasicRemote().sendText(message); } catch (Exception e) { - log.error("发送给客户端失败 sessionId={}", session.getId(), e); + log.error("WS发送给客户端失败 sessionId={}", session.getId(), e); } } } @@ -41,8 +45,13 @@ public class WebSocketServer { @OnClose public void onClose(Session session) { - sessions.remove(session); - log.info("连接已关闭,sessionId={}", session.getId()); + try { + sessions.remove(session); + log.info("连接已关闭,清空当前登录用户,sessionId={}", session.getId()); + deviceStateService.getDeviceState().setCurrentUser(null); + } catch (Exception e) { + log.error("WS链接断开清空登录信息错误", e); + } } @OnError