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