From 8d6b17bfa56fd767c6f9de666eb0dd44c6b032cd Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期四, 22 五月 2025 15:42:38 +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