| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package me.zhengjie.websocket;
- import com.corundumstudio.socketio.SocketIOClient;
- import org.springframework.stereotype.Component;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.UUID;
- import java.util.concurrent.ConcurrentHashMap;
- /**
- * @author humuyu
- * @date 2022/11/6 16:01
- */
- @Component
- public class PcSocketClientCache {
- /**
- * 本地缓存
- */
- private static Map<String, HashMap<UUID, SocketIOClient>> concurrentHashMap = new ConcurrentHashMap<>();
- /**
- * 存入本地缓存
- *
- * @param userId 用户ID
- * @param sessionId 页面sessionID
- * @param socketIOClient 页面对应的通道连接信息
- */
- public void saveClient(String sname, UUID sessionId, SocketIOClient socketIOClient) {
- HashMap<UUID, SocketIOClient> sessionIdClientCache = concurrentHashMap.get(sname);
- if (sessionIdClientCache == null) {
- sessionIdClientCache = new HashMap<>();
- }
- sessionIdClientCache.put(sessionId, socketIOClient);
- concurrentHashMap.put(sname, sessionIdClientCache);
- }
- /**
- * 根据用户ID获取所有通道信息
- *
- * @param userId
- * @return
- */
- public HashMap<UUID, SocketIOClient> getUserClient(String sname) {
- return concurrentHashMap.get(sname);
- }
- /**
- * 得到在线的人员
- *
- * @param userId
- * @return
- */
- public static HashMap<UUID, SocketIOClient> socketIOClient(String sname) {
- return concurrentHashMap.get(sname);
- }
- /**
- * 根据用户ID及页面sessionID删除页面链接信息
- *
- * @param userId
- * @param sessionId
- */
- public void deleteSessionClient(String sname, UUID sessionId) {
- concurrentHashMap.get(sname).remove(sessionId);
- //concurrentHashMap.remove(sname);
- }
- /**
- * 根据用户ID移除sname
- *
- * @param userId
- * @param sessionId
- */
- public void deleteSname(String sname) {
- concurrentHashMap.remove(sname);
- }
- }
|