{
"debug": false,
"host": "127.0.0.1",
"port": 6002,
"mode": "production",
"path_prefix": "/",
"shutdown_grace_period": 10,
"websocket_max_payload_kb": 64,
"user_authentication_timeout": 3600,
"activity_timeout": 120,
"unix_socket": {
"enabled": false,
"path": "/var/run/sockudo/sockudo.sock",
"permission_mode": "660"
},
"adapter": {
"driver": "redis",
"redis": {
"requests_timeout": 5000,
"prefix": "sockudo_adapter:",
"cluster_mode": false,
"redis_pub_options": {
"url": "redis://127.0.0.1:6379"
},
"redis_sub_options": {
"url": "redis://127.0.0.1:6379"
}
},
"cluster": {
"nodes": [],
"prefix": "sockudo_cluster:",
"request_timeout_ms": 5000,
"use_connection_manager": true
},
"nats": {
"servers": ["nats://nats:4222"],
"prefix": "sockudo_nats:",
"request_timeout_ms": 5000,
"connection_timeout_ms": 5000
},
"cluster_health": {
"enabled": true,
"heartbeat_interval_ms": 10000,
"node_timeout_ms": 30000,
"cleanup_interval_ms": 10000
}
},
"app_manager": {
"driver": "memory",
"array": {
"apps": [
{
"id": "app-id",
"key": "app-key",
"secret": "app-secret",
"max_connections": 100000,
"enable_client_messages": true,
"enable_user_authentication": false,
"enabled": true,
"max_client_events_per_second": 10000,
"allowed_origins": ["*"]
}
]
},
"cache": {
"enabled": false,
"ttl": 300
}
},
"cache": {
"driver": "redis",
"redis": {
"prefix": "sockudo_cache:",
"cluster_mode": false,
"url_override": "redis://127.0.0.1:6379"
},
"memory": {
"ttl": 300,
"cleanup_interval": 60,
"max_capacity": 10000
}
},
"database": {
"redis": {
"host": "127.0.0.1",
"port": 6379,
"db": 0,
"key_prefix": "sockudo:",
"sentinels": [],
"cluster_nodes": []
},
"mysql": {
"host": "mysql",
"port": 3306,
"username": "sockudo",
"password": "sockudo123",
"database": "sockudo",
"table_name": "applications",
"pool_min": 2,
"pool_max": 10,
"connection_pool_size": 10,
"cache_ttl": 300,
"cache_cleanup_interval": 60,
"cache_max_capacity": 100
},
"postgres": {
"host": "postgres",
"port": 5432,
"username": "sockudo",
"password": "sockudo123",
"database": "sockudo",
"table_name": "applications",
"pool_min": 2,
"pool_max": 10,
"connection_pool_size": 10,
"cache_ttl": 300,
"cache_cleanup_interval": 60,
"cache_max_capacity": 100
},
"dynamodb": {
"region": "us-east-1",
"table_name": "sockudo-applications"
}
},
"queue": {
"driver": "memory",
"redis": {
"concurrency": 5,
"prefix": "sockudo_queue:",
"cluster_mode": false
},
"redis_cluster": {
"concurrency": 5,
"prefix": "sockudo_queue:",
"nodes": [],
"request_timeout_ms": 5000
},
"sqs": {
"region": "us-east-1",
"visibility_timeout": 30,
"max_messages": 10,
"wait_time_seconds": 5,
"concurrency": 5,
"fifo": false
}
},
"rate_limiter": {
"enabled": false,
"driver": "memory",
"api_rate_limit": {
"max_requests": 10000,
"window_seconds": 60,
"identifier": "api",
"trust_hops": 0
},
"websocket_rate_limit": {
"max_requests": 1000,
"window_seconds": 60,
"identifier": "websocket_connect",
"trust_hops": 0
},
"redis": {
"prefix": "sockudo_rl:",
"cluster_mode": false
}
},
"metrics": {
"enabled": true,
"driver": "prometheus",
"host": "0.0.0.0",
"port": 9602,
"prometheus": {
"prefix": "sockudo_node2_"
}
},
"ssl": {
"enabled": false,
"cert_path": "/app/ssl/cert.pem",
"key_path": "/app/ssl/key.pem",
"redirect_http": false,
"http_port": 80
},
"cors": {
"credentials": true,
"origin": ["*"],
"methods": ["GET", "POST", "OPTIONS"],
"allowed_headers": [
"Authorization",
"Content-Type",
"X-Requested-With",
"Accept"
]
},
"channel_limits": {
"max_name_length": 200,
"cache_ttl": 3600
},
"event_limits": {
"max_channels_at_once": 1000,
"max_name_length": 2000,
"max_payload_in_kb": 1000,
"max_batch_size": 100
},
"presence": {
"max_members_per_channel": 100,
"max_member_size_in_kb": 2
},
"http_api": {
"request_limit_in_mb": 10,
"accept_traffic": {
"memory_threshold": 0.9
}
},
"webhooks": {
"batching": {
"enabled": false,
"duration": 50
}
},
"instance": {
"process_id": "sockudo-node2"
},
"logging": {
"colors_enabled": true,
"include_target": true
},
"database_pooling": {
"enabled": true,
"min": 2,
"max": 10
},
"cleanup": {
"async_enabled": true,
"fallback_to_sync": true,
"queue_buffer_size": 50000,
"batch_size": 25,
"batch_timeout_ms": 50,
"worker_threads": "auto",
"max_retry_attempts": 2
}
}