| | |
| | | */ |
| | | public class WebSocketUsers |
| | | { |
| | | /** |
| | | * WebSocketUsers 日志控制器 |
| | | */ |
| | | private static final Logger LOGGER = LoggerFactory.getLogger(WebSocketUsers.class); |
| | | |
| | | /** |
| | | * 用户集 |
| | | */ |
| | | private static Map<String, Session> USERS = new ConcurrentHashMap<String, Session>(); |
| | | private static Map<String, Session> USERS = new ConcurrentHashMap<>(); |
| | | private static Map<String, Integer> USER_TYPES = new ConcurrentHashMap<>(); |
| | | |
| | | /** |
| | | * 存储用户 |
| | | * |
| | | * @param key 唯一键 |
| | | * @param session 用户信息 |
| | | */ |
| | | public static void put(String key, Session session) |
| | | public static void put(String key, Session session, Integer clientType) |
| | | { |
| | | USERS.put(key, session); |
| | | USER_TYPES.put(key, clientType); |
| | | } |
| | | |
| | | /** |
| | | * 移除用户 |
| | | * |
| | | * @param session 用户信息 |
| | | * |
| | | * @return 移除结果 |
| | | */ |
| | | public static boolean remove(Session session) |
| | | { |
| | | String key = null; |
| | |
| | | return remove(key); |
| | | } |
| | | |
| | | /** |
| | | * 移出用户 |
| | | * |
| | | * @param key 键 |
| | | */ |
| | | public static boolean remove(String key) |
| | | { |
| | | LOGGER.info("\n 正在移出用户 - {}", key); |
| | | Session remove = USERS.remove(key); |
| | | USER_TYPES.remove(key); |
| | | if (remove != null) |
| | | { |
| | | boolean containsValue = USERS.containsValue(remove); |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取在线用户列表 |
| | | * |
| | | * @return 返回用户集合 |
| | | */ |
| | | public static Map<String, Session> getUsers() |
| | | { |
| | | return USERS; |
| | | } |
| | | |
| | | /** |
| | | * 群发消息文本消息 |
| | | * |
| | | * @param message 消息内容 |
| | | */ |
| | | public static Integer getUserType(String key) { |
| | | return USER_TYPES.get(key); |
| | | } |
| | | |
| | | public static void sendMessageToUsersByText(String message) |
| | | { |
| | | Collection<Session> values = USERS.values(); |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 发送文本消息 |
| | | * |
| | | * @param session 自己的用户名 |
| | | * @param message 消息内容 |
| | | */ |
| | | public static void sendMessageToUserByText(Session session, String message) |
| | | { |
| | | if (session != null) |
| | |
| | | LOGGER.info("\n[你已离线]"); |
| | | } |
| | | } |
| | | |
| | | public static void sendMessageToUsersByType(Integer clientType, String message) { |
| | | for (Map.Entry<String, Session> entry : USERS.entrySet()) { |
| | | String key = entry.getKey(); |
| | | Session session = entry.getValue(); |
| | | if (clientType.equals(USER_TYPES.get(key))) { |
| | | sendMessageToUserByText(session, message); |
| | | } |
| | | } |
| | | } |
| | | } |