Spaces:
Sleeping
Sleeping
| // Keep-Alive Script for Render.com | |
| // Prevents sleep mode by pinging health endpoint every 4 minutes | |
| const https = require('https'); | |
| const http = require('http'); | |
| const SITE_URL = process.env.SITE_URL || 'https://softedge.onrender.com'; | |
| const HEALTH_ENDPOINT = '/health.php'; | |
| const INTERVAL_MINUTES = 4; // Ping every 4 minutes (under Render's 5-minute limit) | |
| function pingHealthEndpoint() { | |
| const url = new URL(HEALTH_ENDPOINT, SITE_URL); | |
| const client = url.protocol === 'https:' ? https : http; | |
| const options = { | |
| hostname: url.hostname, | |
| port: url.port, | |
| path: url.pathname, | |
| method: 'GET', | |
| headers: { | |
| 'User-Agent': 'SoftEdge-KeepAlive/1.0', | |
| 'Accept': 'application/json' | |
| } | |
| }; | |
| const req = client.request(options, (res) => { | |
| let data = ''; | |
| res.on('data', (chunk) => { | |
| data += chunk; | |
| }); | |
| res.on('end', () => { | |
| try { | |
| const health = JSON.parse(data); | |
| console.log(`[${new Date().toISOString()}] Health check: ${health.status} - Uptime: ${health.uptime}s`); | |
| } catch (e) { | |
| console.log(`[${new Date().toISOString()}] Health check response received`); | |
| } | |
| }); | |
| }); | |
| req.on('error', (err) => { | |
| console.error(`[${new Date().toISOString()}] Health check failed:`, err.message); | |
| }); | |
| req.setTimeout(10000, () => { | |
| req.destroy(); | |
| console.error(`[${new Date().toISOString()}] Health check timeout`); | |
| }); | |
| req.end(); | |
| } | |
| // Start the keep-alive process | |
| console.log(`Starting SoftEdge Keep-Alive service`); | |
| console.log(`Pinging ${SITE_URL}${HEALTH_ENDPOINT} every ${INTERVAL_MINUTES} minutes`); | |
| console.log(`Press Ctrl+C to stop`); | |
| // Initial ping | |
| pingHealthEndpoint(); | |
| // Set up interval | |
| const intervalMs = INTERVAL_MINUTES * 60 * 1000; | |
| setInterval(pingHealthEndpoint, intervalMs); | |
| // Handle graceful shutdown | |
| process.on('SIGINT', () => { | |
| console.log(`\n[${new Date().toISOString()}] SoftEdge Keep-Alive service stopped`); | |
| process.exit(0); | |
| }); | |
| process.on('SIGTERM', () => { | |
| console.log(`\n[${new Date().toISOString()}] SoftEdge Keep-Alive service terminated`); | |
| process.exit(0); | |
| }); | |