mirror of
https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir.git
synced 2025-08-11 21:23:54 -04:00
55 lines
1.6 KiB
JavaScript
55 lines
1.6 KiB
JavaScript
|
|
import { RoomParticipant } from './roomParticipant.js';
|
||
|
|
|
||
|
|
export class Watcher extends RoomParticipant {
|
||
|
|
|
||
|
|
roomRessourcesData = [];
|
||
|
|
checkRessourceInterval = null;
|
||
|
|
|
||
|
|
constructor(username, roomName) {
|
||
|
|
super(username, roomName);
|
||
|
|
}
|
||
|
|
|
||
|
|
async connectToRoom(baseUrl) {
|
||
|
|
await super.connectToRoom(baseUrl);
|
||
|
|
this.startCheckingResources();
|
||
|
|
}
|
||
|
|
|
||
|
|
checkRessource() {
|
||
|
|
if (this.socket?.connected) {
|
||
|
|
try {
|
||
|
|
this.socket.emit("get-usage");
|
||
|
|
this.socket.once("usage-data", (data) => {
|
||
|
|
this.roomRessourcesData.push({ timestamp: Date.now(), ...data });
|
||
|
|
});
|
||
|
|
} catch (error) {
|
||
|
|
console.warn(`Error capturing metrics for room ${this.roomName}:`, error.message);
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
console.warn(`Socket not connected for room ${this.roomName}`);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
startCheckingResources(intervalMs = 500) {
|
||
|
|
if (this.checkRessourceInterval) {
|
||
|
|
console.warn(`Resource checking is already running for room ${this.roomName}.`);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
this.checkRessourceInterval = setInterval(() => this.checkRessource(), intervalMs);
|
||
|
|
console.log(`Started resource checking for room ${this.roomName}.`);
|
||
|
|
}
|
||
|
|
|
||
|
|
stopCheckingResources() {
|
||
|
|
if (this.checkRessourceInterval) {
|
||
|
|
clearInterval(this.checkRessourceInterval);
|
||
|
|
this.checkRessourceInterval = null;
|
||
|
|
console.log(`Stopped resource checking for room ${this.roomName}.`);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
disconnect() {
|
||
|
|
this.stopCheckingResources();
|
||
|
|
super.disconnect();
|
||
|
|
}
|
||
|
|
}
|