From a54e7457c3ddf1f794f3c5bacb1cc872ba12421d Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期三, 03 四月 2024 13:55:06 +0800 Subject: [PATCH] # --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/map/websocket/MapWebsocket.java | 47 +++++++++++++++++++++++++++++++++++------------ 1 files changed, 35 insertions(+), 12 deletions(-) diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/map/websocket/MapWebsocket.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/map/websocket/MapWebsocket.java index 795d89a..fcf520f 100644 --- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/map/websocket/MapWebsocket.java +++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/map/websocket/MapWebsocket.java @@ -5,40 +5,63 @@ import javax.websocket.*; import javax.websocket.server.ServerEndpoint; +import java.util.concurrent.ConcurrentHashMap; @Slf4j @Component @ServerEndpoint(value = "/ws/map/websocket") public class MapWebsocket { - private Session session; - private String sessionId; + private static final ConcurrentHashMap<String, Session> sessions = new ConcurrentHashMap<>(); @OnOpen public void onOpen(Session session) { - this.session = session; - this.sessionId = session.getId(); - log.info("{} connected", this.sessionId); + sessions.put(session.getId(), session); + log.info("Opened new session in instance " + session.getId()); } @OnMessage public void onMessage(String message, Session session) { - log.info("{} sendMsg:{}", this.sessionId, message); + log.info("Received WebSocket message: {}", message); } @OnClose public void onClose(Session session) { - log.info("{} closed", this.sessionId); + sessions.remove(session.getId()); + log.info("Closed WebSocket session: {}", session.getId()); } - /** - * @ Param session - * @ Param error - */ @OnError public void onError(Session session, Throwable error) { - log.error("鍙戠敓閿欒"); error.printStackTrace(); + log.error("Error in WebSocket session: {}", session.getId(), error); + try { + session.close(); + } catch (Exception e) { + log.error("Error closing session: {}", session.getId(), e); + } finally { + sessions.remove(session.getId()); + } + } + + public static void sendMessage(Session session, String message) { + if(session.isOpen()){ + try { + session.getBasicRemote().sendText(message); + } catch (Exception e) { + log.error("Failed to send message to session: {}", session.getId(), e); + } + } + } + + public static void broadcast(String message) { + sessions.forEach((id, session) -> { + try { + session.getBasicRemote().sendText(message); + } catch (Exception e) { + log.error("Failed to send message to session: {}", id, e); + } + }); } } -- Gitblit v1.9.1