43 lines
1.3 KiB
JavaScript
43 lines
1.3 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.SocketGateway = void 0;
|
|
const BROADCAST_EVENTS = [
|
|
'crawling.started',
|
|
'crawling.state_discovered',
|
|
'crawling.action_executed',
|
|
'crawling.completed',
|
|
'crawling.failed',
|
|
'findings.created',
|
|
'findings.resolved',
|
|
'findings.enriched',
|
|
'fuzzing.started',
|
|
'fuzzing.vulnerability_detected',
|
|
'fuzzing.completed',
|
|
];
|
|
class SocketGateway {
|
|
constructor(io, eventBus, logger) {
|
|
this.io = io;
|
|
this.eventBus = eventBus;
|
|
this.logger = logger;
|
|
}
|
|
start() {
|
|
// Subscribe EventBus events → broadcast to all connected clients
|
|
for (const eventName of BROADCAST_EVENTS) {
|
|
this.eventBus.subscribe(eventName, {
|
|
handle: async (event) => {
|
|
this.io.emit(eventName, event);
|
|
this.logger.debug({ eventName }, 'Socket event broadcast');
|
|
},
|
|
});
|
|
}
|
|
this.io.on('connection', (socket) => {
|
|
this.logger.debug({ socketId: socket.id }, 'Client connected');
|
|
socket.on('disconnect', () => {
|
|
this.logger.debug({ socketId: socket.id }, 'Client disconnected');
|
|
});
|
|
});
|
|
this.logger.info('SocketGateway started');
|
|
}
|
|
}
|
|
exports.SocketGateway = SocketGateway;
|