From ef5a518c3e2c1fe41aa60f56ca31ddafa0cb1561 Mon Sep 17 00:00:00 2001 From: guoyuji <guoyujie@ng.com> Date: 星期四, 23 五月 2024 08:32:36 +0800 Subject: [PATCH] 添加产品汇总报表 --- 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