| | |
| | | private static final Logger LOGGER = LoggerFactory.getLogger(WebSocketUsers.class); |
| | | |
| | | private static Map<String, Session> USERS = new ConcurrentHashMap<>(); |
| | | private static Map<String, Integer> USER_TYPES = new ConcurrentHashMap<>(); |
| | | private static Map<String, String> USER_TYPES = new ConcurrentHashMap<>(); |
| | | |
| | | public static void put(String key, Session session, Integer clientType) |
| | | public static void put(String userId, Session session) |
| | | { |
| | | USERS.put(key, session); |
| | | USER_TYPES.put(key, clientType); |
| | | USERS.put(userId, session); |
| | | USER_TYPES.put(userId, session.getId()); |
| | | } |
| | | |
| | | public static boolean remove(Session session) |
| | |
| | | return USERS; |
| | | } |
| | | |
| | | public static Integer getUserType(String key) { |
| | | public static String getUserType(String key) { |
| | | return USER_TYPES.get(key); |
| | | } |
| | | |
| | |
| | | for (Session value : values) { |
| | | sendMessageToUserByText(value, message); |
| | | } |
| | | |
| | | //if (userId.equals(USER_TYPES.get(key))) { |
| | | // sendMessageToUserByText(value, message); |
| | | // } |
| | | // for (Session value : values) { |
| | | // sendMessageToUsersById(userId, message); |
| | | // |
| | | // } |
| | | } |
| | | public static void sendMessageToUsersByUserId(String message,String userId) |
| | | { |
| | | // 遍历map集合USERS 如果key和userId相同 那么将消息推送给他 |
| | | USERS.entrySet().stream() |
| | | .filter(entry -> userId.equals(entry.getKey())) |
| | | .forEach(entry -> sendMessageToUserByText(entry.getValue(), message)); |
| | | } |
| | | |
| | | public static void sendMessageToUserByText(Session session, String message) |
| | |
| | | } |
| | | } |
| | | } |
| | | /** |
| | | * 根据用户id发送消息 |
| | | * |
| | | * @param userId 用户id |
| | | * @param message 发送的消息 |
| | | */ |
| | | public static void sendMessageToUsersById(String userId, String message) { |
| | | for (Map.Entry<String, Session> entry : USERS.entrySet()) { |
| | | String key = entry.getKey(); |
| | | Session session = entry.getValue(); |
| | | if (userId.equals(USER_TYPES.get(key))) { |
| | | sendMessageToUserByText(session, message); |
| | | } |
| | | } |
| | | } |
| | | } |