Portal Community

Lifecycle Events for Error Handling

edgeStream.on('stream:error', (event) => {
  console.error('EdgeStream stream error:', event.data?.error);
  errorMonitoring.captureException(event.data?.error);
});

edgeStream.on('server:error', (event) => {
  console.error(`Server ${event.serverId} error:`, event.data?.error);
  // Show connection error indicator in UI
  connectionStore.setError(event.serverId, event.data?.error as string);
});

edgeStream.on('server:disconnected', (event) => {
  console.warn(`Server ${event.serverId} disconnected`);
  // Show offline indicator — SignalR will auto-reconnect
  connectionStore.setStatus(event.serverId, 'disconnected');
});

edgeStream.on('server:connected', (event) => {
  console.log(`Server ${event.serverId} reconnected`);
  connectionStore.setStatus(event.serverId, 'connected');
});

Start Failure Handling

try {
  await edgeStream.start();
} catch (error) {
  console.error('EdgeStream failed to start:', error);
  // EdgeStream status is now 'error'

  // Options:
  // 1. Show offline mode UI
  uiStore.setOfflineMode(true);
  // 2. Retry after delay
  setTimeout(() => edgeStream.start().catch(handleStartError), 5000);
  // 3. Redirect to reconnection page
}

Transport Error Monitoring

const server = edgeStream.server('bas')!;

server.transport.onError((error) => {
  console.error('[BAS Transport] Error:', error.message);
  metrics.increment('edge_stream.transport_errors', { server: 'bas' });
});

server.transport.onStatusChange((status) => {
  console.log('[BAS Transport] Status:', status);
  uiStore.updateConnectionStatus('bas', status);
});

Reconnection Behavior

With SignalR transport and maxAttempts: 0, reconnection is automatic and indefinite. The server emits server:disconnected and server:connected events during the reconnection cycle:

EventWhenSignalR Auto-Reconnect
server:disconnectedTransport disconnectsReconnect begins automatically
server:errorTransport error during connect/sendRetry with backoff
server:connectedTransport (re)connectsNormal operation resumes
Next: Transports For the full transport reference — SignalR, WebSocket, SSE, HTTP polling — see Guide 6: Transports.