UNPKG

@genkit-ai/telemetry-server

Version:
56 lines 1.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BroadcastManager = void 0; class BroadcastManager { connections = new Map(); subscribe(traceId, response) { if (!this.connections.has(traceId)) { this.connections.set(traceId, new Set()); } this.connections.get(traceId).add(response); response.on('close', () => { this.unsubscribe(traceId, response); }); } unsubscribe(traceId, response) { const connections = this.connections.get(traceId); if (connections) { connections.delete(response); if (connections.size === 0) { this.connections.delete(traceId); } } } broadcast(traceId, event) { const connections = this.connections.get(traceId); if (!connections || connections.size === 0) { return; } const data = JSON.stringify(event); const messageToSend = `data: ${data}\n\n`; for (const connection of connections) { connection.write(messageToSend); } } close(traceId) { const connections = this.connections.get(traceId); if (connections) { for (const connection of connections) { try { connection.end(); } catch (error) { } } this.connections.delete(traceId); } } getConnectionCount(traceId) { return this.connections.get(traceId)?.size ?? 0; } hasConnections(traceId) { return this.connections.has(traceId); } } exports.BroadcastManager = BroadcastManager; //# sourceMappingURL=broadcast-manager.js.map