Skip to content

StreamManager

Defined in: packages/core/src/data/streaming/stream-manager.ts:124

Manages streaming connections (SSE and WebSocket).

Provides a unified interface for managing multiple streaming connections, handling connection lifecycle, automatic reconnection, and message routing.

Features:

  • Multiple concurrent connections
  • Automatic reconnection with exponential backoff
  • Connection state tracking
  • Message counting and statistics
  • Type-safe callbacks
const manager = new StreamManager();
// Connect to SSE stream
await manager.connect('earthquake-feed', {
type: 'sse',
url: 'https://earthquake.usgs.gov/events',
onData: (data) => updateMap(data),
reconnect: { enabled: true }
});
// Connect to WebSocket stream
await manager.connect('vehicle-updates', {
type: 'websocket',
url: 'wss://transit.example.com/vehicles',
onData: (data) => updateVehicles(data),
protocols: ['json']
});
// Send data via WebSocket
manager.send('vehicle-updates', { type: 'subscribe', channel: 'all' });
// Check connection state
const state = manager.getState('earthquake-feed');
console.log(`Messages received: ${state?.messageCount}`);
// Disconnect when done
manager.disconnect('earthquake-feed');
manager.disconnectAll();

new StreamManager(): StreamManager

StreamManager

connect(id, config): Promise<void>

Defined in: packages/core/src/data/streaming/stream-manager.ts:143

Connect to a streaming source.

ParameterTypeDescription
idstringUnique identifier for this connection
configStreamConfigStream configuration

Promise<void>

If a connection with the given id already exists

await manager.connect('updates', {
type: 'sse',
url: 'https://api.example.com/stream',
onData: (data) => console.log(data)
});

destroy(): void

Defined in: packages/core/src/data/streaming/stream-manager.ts:292

Clean up all resources.

void

manager.destroy();

disconnect(id): void

Defined in: packages/core/src/data/streaming/stream-manager.ts:179

Disconnect a specific stream.

ParameterTypeDescription
idstringStream identifier

void

manager.disconnect('updates');

disconnectAll(): void

Defined in: packages/core/src/data/streaming/stream-manager.ts:197

Disconnect all active streams.

void

manager.disconnectAll();

getActiveIds(): string[]

Defined in: packages/core/src/data/streaming/stream-manager.ts:252

Get all active stream IDs.

string[]

Array of active stream identifiers

const activeStreams = manager.getActiveIds();
console.log(`Active streams: ${activeStreams.join(', ')}`);

getState(id): StreamState | null

Defined in: packages/core/src/data/streaming/stream-manager.ts:218

Get the current state of a stream.

ParameterTypeDescription
idstringStream identifier

StreamState | null

Stream state or null if not found

const state = manager.getState('updates');
if (state) {
console.log(`State: ${state.connectionState}`);
console.log(`Messages: ${state.messageCount}`);
}

isConnected(id): boolean

Defined in: packages/core/src/data/streaming/stream-manager.ts:236

Check if a stream is currently connected.

ParameterTypeDescription
idstringStream identifier

boolean

True if connected, false otherwise

if (manager.isConnected('updates')) {
console.log('Stream is active');
}

send(id, data): void

Defined in: packages/core/src/data/streaming/stream-manager.ts:271

Send data to a WebSocket connection.

ParameterTypeDescription
idstringStream identifier
dataunknownData to send (will be JSON stringified)

void

If stream is not a WebSocket connection or not connected

manager.send('ws-updates', {
type: 'subscribe',
channels: ['news', 'sports']
});