2025-11-27 19:07:55 +08:00

61 lines
2.1 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}
}