UNPKG

@genkit-ai/telemetry-server

Version:
52 lines 1.62 kB
export 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); } } //# sourceMappingURL=broadcast-manager.js.map