[bug] make shutdown reliable
This commit is contained in:
parent
afe12860cf
commit
45a1478210
@ -377,25 +377,50 @@ export class Server {
|
|||||||
|
|
||||||
public shutdown() {
|
public shutdown() {
|
||||||
console.log('🛑 Shutting down server...');
|
console.log('🛑 Shutting down server...');
|
||||||
|
|
||||||
|
// Close all active client connections first
|
||||||
|
for (const [ws, clientId] of this.clients.entries()) {
|
||||||
|
console.log(`🔌 Closing connection to ${clientId}...`);
|
||||||
|
ws.close(1000, 'Server shutting down');
|
||||||
|
}
|
||||||
|
this.clients.clear();
|
||||||
|
|
||||||
|
// Close the WebSocket server
|
||||||
this.wss.close(() => {
|
this.wss.close(() => {
|
||||||
console.log('✅ Server shutdown complete');
|
console.log('✅ Server shutdown complete');
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Force exit after a timeout if graceful shutdown fails
|
||||||
|
setTimeout(() => {
|
||||||
|
console.log('⚠️ Force shutdown after timeout');
|
||||||
|
process.exit(1);
|
||||||
|
}, 5000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle graceful shutdown
|
// Handle graceful shutdown
|
||||||
|
let isShuttingDown = false;
|
||||||
|
|
||||||
process.on('SIGINT', () => {
|
process.on('SIGINT', () => {
|
||||||
|
if (isShuttingDown) return;
|
||||||
|
isShuttingDown = true;
|
||||||
console.log('\n🛑 Received SIGINT, shutting down gracefully...');
|
console.log('\n🛑 Received SIGINT, shutting down gracefully...');
|
||||||
if (server) {
|
if (server) {
|
||||||
server.shutdown();
|
server.shutdown();
|
||||||
|
} else {
|
||||||
|
process.exit(0);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
process.on('SIGTERM', () => {
|
process.on('SIGTERM', () => {
|
||||||
|
if (isShuttingDown) return;
|
||||||
|
isShuttingDown = true;
|
||||||
console.log('\n🛑 Received SIGTERM, shutting down gracefully...');
|
console.log('\n🛑 Received SIGTERM, shutting down gracefully...');
|
||||||
if (server) {
|
if (server) {
|
||||||
server.shutdown();
|
server.shutdown();
|
||||||
|
} else {
|
||||||
|
process.exit(0);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user