class BackendRegistry { constructor() { this.backends = new Map(); } register(serviceId, ws) { this.backends.set(serviceId, { ws, connectedAt: new Date().toISOString(), lastPing: null, }); console.log(`[registry] registered backend: ${serviceId}`); } unregister(serviceId) { if (this.backends.has(serviceId)) { this.backends.delete(serviceId); console.log(`[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();