61 lines
2.1 KiB
Java
61 lines
2.1 KiB
Java
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<WebSocketUser> 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);
|
||
}
|
||
}
|
||
}
|