class BackendRegistry { constructor() { this.backends = new Map(); this.log = require('./event-bus').log; } register(serviceId, ws) { this.backends.set(serviceId, { ws, connectedAt: new Date().toISOString(), lastPing: null, }); this.log('info', `[registry] registered backend: ${serviceId}`); } unregister(serviceId) { if (this.backends.has(serviceId)) { this.backends.delete(serviceId); this.log('info', `[registry] unregistered backend: ${serviceId}`); } } get(serviceId) { const entry = this.backends.get(serviceId); return entry ? entry.ws : null; } list() { return Array.from(this.backends.entries()).map(([serviceId, entry]) => ({ serviceId, connectedAt: entry.connectedAt, lastPing: entry.lastPing, })); } updatePing(serviceId) { const entry = this.backends.get(serviceId); if (entry) { entry.lastPing = new Date().toISOString(); } } count() { return this.backends.size; } } module.exports = new BackendRegistry();