111
This commit is contained in:
132
dist/managers/WebClientManager.d.ts
vendored
Normal file
132
dist/managers/WebClientManager.d.ts
vendored
Normal file
@@ -0,0 +1,132 @@
|
||||
import { Server as SocketIOServer, Socket } from 'socket.io';
|
||||
import { DatabaseService } from '../services/DatabaseService';
|
||||
/**
|
||||
* Web客户端信息接口
|
||||
*/
|
||||
export interface WebClientInfo {
|
||||
id: string;
|
||||
socketId: string;
|
||||
userAgent: string;
|
||||
ip: string;
|
||||
connectedAt: Date;
|
||||
lastSeen: Date;
|
||||
controllingDeviceId?: string;
|
||||
userId?: string;
|
||||
username?: string;
|
||||
}
|
||||
/**
|
||||
* Web客户端管理器
|
||||
*/
|
||||
declare class WebClientManager {
|
||||
private clients;
|
||||
private socketToClient;
|
||||
private deviceControllers;
|
||||
private logger;
|
||||
io?: SocketIOServer;
|
||||
private databaseService?;
|
||||
private requestTimestamps;
|
||||
private readonly REQUEST_COOLDOWN;
|
||||
constructor(databaseService?: DatabaseService);
|
||||
/**
|
||||
* ✅ 清理所有客户端记录(服务器重启时调用)
|
||||
*/
|
||||
clearAllClients(): void;
|
||||
/**
|
||||
* 设置Socket.IO实例
|
||||
*/
|
||||
setSocketIO(io: SocketIOServer): void;
|
||||
/**
|
||||
* 添加Web客户端
|
||||
*/
|
||||
addClient(clientInfo: WebClientInfo): void;
|
||||
/**
|
||||
* 移除Web客户端
|
||||
*/
|
||||
removeClient(clientId: string): boolean;
|
||||
/**
|
||||
* 通过Socket ID移除客户端
|
||||
*/
|
||||
removeClientBySocketId(socketId: string): boolean;
|
||||
/**
|
||||
* 获取客户端信息
|
||||
*/
|
||||
getClient(clientId: string): WebClientInfo | undefined;
|
||||
/**
|
||||
* 通过Socket ID获取客户端
|
||||
*/
|
||||
getClientBySocketId(socketId: string): WebClientInfo | undefined;
|
||||
/**
|
||||
* 获取所有客户端
|
||||
*/
|
||||
getAllClients(): WebClientInfo[];
|
||||
/**
|
||||
* 获取客户端数量
|
||||
*/
|
||||
getClientCount(): number;
|
||||
/**
|
||||
* 获取客户端Socket
|
||||
*/
|
||||
getClientSocket(clientId: string): Socket | undefined;
|
||||
/**
|
||||
* 请求控制设备
|
||||
*/
|
||||
requestDeviceControl(clientId: string, deviceId: string): {
|
||||
success: boolean;
|
||||
message: string;
|
||||
currentController?: string;
|
||||
};
|
||||
/**
|
||||
* 释放设备控制权
|
||||
*/
|
||||
releaseDeviceControl(deviceId: string): boolean;
|
||||
/**
|
||||
* 获取设备控制者
|
||||
*/
|
||||
getDeviceController(deviceId: string): string | undefined;
|
||||
/**
|
||||
* 检查客户端是否有设备控制权
|
||||
*/
|
||||
hasDeviceControl(clientId: string, deviceId: string): boolean;
|
||||
/**
|
||||
* 向指定客户端发送消息
|
||||
*/
|
||||
sendToClient(clientId: string, event: string, data: any): boolean;
|
||||
/**
|
||||
* 向所有客户端广播消息
|
||||
*/
|
||||
broadcastToAll(event: string, data: any): void;
|
||||
/**
|
||||
* 向控制指定设备的客户端发送消息
|
||||
*/
|
||||
sendToDeviceController(deviceId: string, event: string, data: any): boolean;
|
||||
/**
|
||||
* 更新客户端活跃时间
|
||||
*/
|
||||
updateClientActivity(socketId: string): void;
|
||||
/**
|
||||
* 清理不活跃的客户端
|
||||
*/
|
||||
cleanupInactiveClients(timeoutMs?: number): void;
|
||||
/**
|
||||
* 获取客户端统计信息
|
||||
*/
|
||||
getClientStats(): {
|
||||
total: number;
|
||||
controlling: number;
|
||||
idle: number;
|
||||
};
|
||||
/**
|
||||
* 🔐 恢复用户的设备权限
|
||||
*/
|
||||
restoreUserPermissions(userId: string, clientId: string): void;
|
||||
/**
|
||||
* 🔐 设置客户端用户信息
|
||||
*/
|
||||
setClientUserInfo(clientId: string, userId: string, username: string): void;
|
||||
/**
|
||||
* 🛡️ 记录权限操作审计日志
|
||||
*/
|
||||
private logPermissionOperation;
|
||||
}
|
||||
export default WebClientManager;
|
||||
//# sourceMappingURL=WebClientManager.d.ts.map
|
||||
Reference in New Issue
Block a user