feat: monitor web recorder backend performance

This commit is contained in:
amhsirak
2025-01-04 15:57:41 +05:30
parent e20a4073de
commit 0da5cb0f67

View File

@@ -16,6 +16,7 @@ import { WorkflowGenerator } from "../../workflow-management/classes/Generator";
import { WorkflowInterpreter } from "../../workflow-management/classes/Interpreter"; import { WorkflowInterpreter } from "../../workflow-management/classes/Interpreter";
import { getDecryptedProxyConfig } from '../../routes/proxy'; import { getDecryptedProxyConfig } from '../../routes/proxy';
import { getInjectableScript } from 'idcac-playwright'; import { getInjectableScript } from 'idcac-playwright';
import { BackendPerformanceMonitor } from '../../../../perf/performance'
chromium.use(stealthPlugin()); chromium.use(stealthPlugin());
@@ -78,6 +79,17 @@ export class RemoteBrowser {
*/ */
public interpreter: WorkflowInterpreter; public interpreter: WorkflowInterpreter;
private performanceMonitor: BackendPerformanceMonitor;
private startPerformanceReporting() {
setInterval(() => {
const report = this.performanceMonitor.getPerformanceReport();
console.log('Backend Performance Report:', report);
}, 5000);
}
/** /**
* Initializes a new instances of the {@link Generator} and {@link WorkflowInterpreter} classes and * Initializes a new instances of the {@link Generator} and {@link WorkflowInterpreter} classes and
* assigns the socket instance everywhere. * assigns the socket instance everywhere.
@@ -88,6 +100,8 @@ export class RemoteBrowser {
this.socket = socket; this.socket = socket;
this.interpreter = new WorkflowInterpreter(socket); this.interpreter = new WorkflowInterpreter(socket);
this.generator = new WorkflowGenerator(socket); this.generator = new WorkflowGenerator(socket);
this.performanceMonitor = new BackendPerformanceMonitor();
this.startPerformanceReporting();
} }
/** /**
@@ -519,8 +533,10 @@ export class RemoteBrowser {
* @returns void * @returns void
*/ */
private emitScreenshot = (payload: any): void => { private emitScreenshot = (payload: any): void => {
const dataWithMimeType = ('data:image/jpeg;base64,').concat(payload); this.performanceMonitor.measureEmitPerformance(() => {
this.socket.emit('screencast', dataWithMimeType); const dataWithMimeType = ('data:image/jpeg;base64,').concat(payload);
logger.log('debug', `Screenshot emitted`); this.socket.emit('screencast', dataWithMimeType);
logger.log('debug', `Screenshot emitted`);
});
}; };
} }