From 2f640b1038fa331954f78ed1f4317212cf5bb34d Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期五, 07 六月 2024 16:56:06 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override

---
 north-glass-erp/src/main/java/com/example/erp/tools/WebSocketServerPool.java |   76 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 76 insertions(+), 0 deletions(-)

diff --git a/north-glass-erp/src/main/java/com/example/erp/tools/WebSocketServerPool.java b/north-glass-erp/src/main/java/com/example/erp/tools/WebSocketServerPool.java
new file mode 100644
index 0000000..6a74bc6
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/tools/WebSocketServerPool.java
@@ -0,0 +1,76 @@
+package com.example.erp.tools;
+
+import javax.websocket.Session;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+/**
+ * @author HFL
+ * @date 2022/5/16 9:39
+ * Websocket杩炴帴姹犮�佸杩炴帴姹犲唴杩炴帴鎿嶄綔 鍜屾暟鎹帹閫佹柟娉�
+ */
+public class WebSocketServerPool {
+
+    /**
+     * WebSocket杩炴帴姹�
+     */
+    private static ConcurrentMap<Session, String> dataConnect = new ConcurrentHashMap<>();
+
+    /**
+     * 灏唚ebsocket杩炴帴锛屾斁鍏ヨ繛鎺ユ睜
+     * @param session websocket杩炴帴
+     * @param screen 鍦烘櫙ID
+     */
+    public static void addDataConnect(Session session, String screen){
+        dataConnect.put(session, screen);
+        Iterator<Map.Entry<Session, String>> iterator = dataConnect.entrySet().iterator();
+        synchronized (iterator){
+            //绉婚櫎澶辨晥杩炴帴
+            while(iterator.hasNext()){
+                Map.Entry<Session, String> entry = iterator.next();
+                Session sessionNew = entry.getKey();
+                Map<String, Object> userProperties = sessionNew.getUserProperties();
+                if(null != userProperties && null != userProperties.get("ReadyState") && "0" != String.valueOf(userProperties.get("ReadyState"))){
+                    iterator.remove();
+                }
+            }
+        }
+    }
+
+    /**
+     * 灏唚ebsocket杩炴帴浠庤繛鎺ユ睜涓Щ闄�
+     * @param session websocket杩炴帴
+     */
+    public static void removeConnect(Session session){
+        Iterator<Map.Entry<Session, String>> iterator = dataConnect.entrySet().iterator();
+        synchronized (iterator){
+            //涓诲姩绉婚櫎杩炴帴
+            while (iterator.hasNext()){
+                if(session.equals(iterator.next().getKey())){
+                    iterator.remove();
+                }
+            }
+        }
+    }
+
+    /**
+     * 鑾峰彇杩炴帴姹犱腑鎵�鏈夎繛鎺�
+     * @return 杩炴帴姹犳墍鏈夋暟鎹�
+     */
+    public static ConcurrentMap<Session, String> getDataConnect(){
+        return dataConnect;
+    }
+
+    /**
+     * Websocket娑堟伅鎺ㄩ��
+     * @param session 杩炴帴
+     * @param message 娑堟伅涓讳綋
+     * @throws IOException I/O寮傚父
+     */
+    public static void sendMessage(Session session, String message) throws IOException {
+        session.getBasicRemote().sendText(message);
+    }
+}

--
Gitblit v1.8.0