package com.czlis.interfaceCommon.websocket; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserService { /** * 示例1:获取所有在线管理员并推送通知 */ public void pushNoticeToAdmin(String notice) { // 根据角色筛选在线管理员 List adminUsers = ChatWebSocketServer.getOnlineUsersByRole("ADMIN"); if (adminUsers.isEmpty()) { System.out.println("当前无在线管理员"); return; } String message = "【管理员通知】" + notice; for (WebSocketUser admin : adminUsers) { ChatWebSocketServer.sendToUser(admin.getUserId(), message); System.out.println("已给管理员[" + admin.getUsername() + "]推送通知,IP:" + admin.getLoginIp()); } } /** * 示例2:获取指定用户的详细连接信息 */ public void getUserConnectInfo(String userId) { WebSocketUser user = ChatWebSocketServer.getOnlineUser(userId); if (user == null) { System.out.println("用户[" + userId + "]不在线"); return; } // 获取身份属性 System.out.println("用户名:" + user.getUsername()); System.out.println("角色:" + user.getRole()); System.out.println("登录IP:" + user.getLoginIp()); System.out.println("连接时间:" + user.getConnectTime()); System.out.println("是否在线:" + user.isConnected()); // 获取动态属性(如设备类型) String deviceType = (String) user.getDynamicAttr("deviceType"); System.out.println("登录设备:" + (deviceType == null ? "未知" : deviceType)); } /** * 示例3:给在线用户设置动态属性(如设备类型) */ public void setUserDeviceAttr(String userId, String deviceType) { WebSocketUser user = ChatWebSocketServer.getOnlineUser(userId); if (user != null) { user.setDynamicAttr("deviceType", deviceType); System.out.println("已给用户[" + userId + "]设置设备类型:" + deviceType); } } }