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