This commit is contained in:
wdvipa
2026-02-09 16:34:01 +08:00
commit 450367dea2
92 changed files with 36822 additions and 0 deletions

132
dist/managers/WebClientManager.d.ts vendored Normal file
View 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