PcSocketClientCache.java 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package me.zhengjie.websocket;
  2. import com.corundumstudio.socketio.SocketIOClient;
  3. import org.springframework.stereotype.Component;
  4. import java.util.HashMap;
  5. import java.util.Map;
  6. import java.util.UUID;
  7. import java.util.concurrent.ConcurrentHashMap;
  8. /**
  9. * @author humuyu
  10. * @date 2022/11/6 16:01
  11. */
  12. @Component
  13. public class PcSocketClientCache {
  14. /**
  15. * 本地缓存
  16. */
  17. private static Map<String, HashMap<UUID, SocketIOClient>> concurrentHashMap = new ConcurrentHashMap<>();
  18. /**
  19. * 存入本地缓存
  20. *
  21. * @param userId 用户ID
  22. * @param sessionId 页面sessionID
  23. * @param socketIOClient 页面对应的通道连接信息
  24. */
  25. public void saveClient(String sname, UUID sessionId, SocketIOClient socketIOClient) {
  26. HashMap<UUID, SocketIOClient> sessionIdClientCache = concurrentHashMap.get(sname);
  27. if (sessionIdClientCache == null) {
  28. sessionIdClientCache = new HashMap<>();
  29. }
  30. sessionIdClientCache.put(sessionId, socketIOClient);
  31. concurrentHashMap.put(sname, sessionIdClientCache);
  32. }
  33. /**
  34. * 根据用户ID获取所有通道信息
  35. *
  36. * @param userId
  37. * @return
  38. */
  39. public HashMap<UUID, SocketIOClient> getUserClient(String sname) {
  40. return concurrentHashMap.get(sname);
  41. }
  42. /**
  43. * 得到在线的人员
  44. *
  45. * @param userId
  46. * @return
  47. */
  48. public static HashMap<UUID, SocketIOClient> socketIOClient(String sname) {
  49. return concurrentHashMap.get(sname);
  50. }
  51. /**
  52. * 根据用户ID及页面sessionID删除页面链接信息
  53. *
  54. * @param userId
  55. * @param sessionId
  56. */
  57. public void deleteSessionClient(String sname, UUID sessionId) {
  58. concurrentHashMap.get(sname).remove(sessionId);
  59. //concurrentHashMap.remove(sname);
  60. }
  61. /**
  62. * 根据用户ID移除sname
  63. *
  64. * @param userId
  65. * @param sessionId
  66. */
  67. public void deleteSname(String sname) {
  68. concurrentHashMap.remove(sname);
  69. }
  70. }