const { spawn } = require('child_process'); const path = require('path'); console.log('Starting AquaMaster Mock Server...\n'); // Start MQTT Broker console.log('[1/2] Starting MQTT Broker...'); const mqttBroker = spawn('node', [path.join(__dirname, 'mqtt_broker.js')], { stdio: 'inherit', cwd: __dirname }); mqttBroker.on('error', (err) => { console.error('Failed to start MQTT Broker:', err); process.exit(1); }); // Wait a bit longer for MQTT broker to fully start setTimeout(() => { // Start Mock ESP32 Server console.log('[2/2] Starting Mock ESP32 Server...'); const mockServer = spawn('node', [path.join(__dirname, 'mock_esp32_server.js')], { stdio: 'inherit', cwd: __dirname }); mockServer.on('error', (err) => { console.error('Failed to start Mock ESP32 Server:', err); mqttBroker.kill(); process.exit(1); }); // Handle shutdown const shutdown = () => { console.log('\nShutting down servers...'); if (mqttBroker && !mqttBroker.killed) { mqttBroker.kill(); } if (mockServer && !mockServer.killed) { mockServer.kill(); } process.exit(0); }; process.on('SIGINT', shutdown); process.on('SIGTERM', shutdown); }, 3000); // Increased wait time to 3 seconds