Client Configuration

Complete configuration options for CloudSignalClient

Client Configuration

The CloudSignalClient constructor accepts a configuration object with the following options.

Required Options

interface CloudSignalConfig {
  organizationId: string;  // Your CloudSignal organization ID
}

Connection Options

{
  // MQTT broker URL (default: wss://mqtt.cloudsignal.io:8084/mqtt)
  brokerUrl?: string;
  
  // Connection timeout in ms (default: 30000)
  connectTimeout?: number;
  
  // Keep-alive interval in seconds (default: 60)
  keepAlive?: number;
  
  // Auto-reconnect on disconnect (default: true)
  autoReconnect?: boolean;
  
  // Max reconnect attempts (default: Infinity)
  maxReconnectAttempts?: number;
  
  // Base delay for reconnect backoff in ms (default: 1000)
  reconnectDelay?: number;
  
  // Max reconnect delay in ms (default: 30000)
  maxReconnectDelay?: number;
}

Authentication Options

{
  // API key for token auth
  apiKey?: string;
  
  // Token authentication config
  auth?: {
    enabled: boolean;
    userId?: string;
    token?: string;
    tokenRefreshBuffer?: number;  // seconds before expiry
    onTokenExpiring?: () => Promise<string>;
  };
  
  // External IdP authentication
  externalAuth?: {
    provider: 'supabase' | 'firebase' | 'auth0' | 'oidc';
    getToken: () => Promise<string | null>;
    getUserId: () => string | undefined;
    issuer?: string;
    audience?: string;
    refreshInterval?: number;
  };
}

Message Options

{
  // Default QoS level (default: 1)
  qos?: 0 | 1 | 2;
  
  // Enable message queue for offline (default: true)
  enableOfflineQueue?: boolean;
  
  // Max offline queue size (default: 100)
  maxOfflineQueueSize?: number;
  
  // Auto-parse JSON messages (default: true)
  autoParseJson?: boolean;
}

Logging Options

{
  // Enable debug logging (default: false)
  debug?: boolean;
  
  // Log level (default: 'warn')
  logLevel?: 'debug' | 'info' | 'warn' | 'error';
  
  // Custom logger function
  logger?: (level: string, message: string, ...args: any[]) => void;
}

Platform Presets

Use presets for optimized configuration:

import { CloudSignalClient, presets } from '@cloudsignal/mqtt-client';

// Mobile preset - optimized for battery and reconnection
const mobileClient = new CloudSignalClient({
  organizationId: 'your-org-id',
  ...presets.mobile
});

// Desktop preset - balanced performance
const desktopClient = new CloudSignalClient({
  organizationId: 'your-org-id',
  ...presets.desktop
});

// Server preset - high throughput, low latency
const serverClient = new CloudSignalClient({
  organizationId: 'your-org-id',
  ...presets.server
});

Preset Details

Mobile Preset:

  • Longer keep-alive (120s) for battery optimization
  • Aggressive reconnection with exponential backoff
  • Smaller offline queue (50 messages)

Desktop Preset:

  • Standard keep-alive (60s)
  • Moderate offline queue (100 messages)
  • Balanced reconnection strategy

Server Preset:

  • Short keep-alive (30s) for fast failure detection
  • Large offline queue (1000 messages)
  • Immediate reconnection attempts

Complete Example

import { CloudSignalClient } from '@cloudsignal/mqtt-client';

const client = new CloudSignalClient({
  // Required
  organizationId: 'org-abc123',
  
  // Connection
  brokerUrl: 'wss://mqtt.cloudsignal.io:8084/mqtt',
  connectTimeout: 30000,
  keepAlive: 60,
  autoReconnect: true,
  maxReconnectAttempts: 10,
  reconnectDelay: 1000,
  maxReconnectDelay: 30000,
  
  // Authentication
  auth: {
    enabled: true,
    userId: 'user-123',
    tokenRefreshBuffer: 300
  },
  
  // Messages
  qos: 1,
  enableOfflineQueue: true,
  maxOfflineQueueSize: 100,
  autoParseJson: true,
  
  // Logging
  debug: process.env.NODE_ENV === 'development',
  logLevel: 'info'
});