uWebSockets.js/examples/GracefulShutdown.js

46 lines
1.2 KiB
JavaScript
Raw Normal View History

/* Minimal example that shuts down gracefully */
const uWS = require('../dist/uws.js');
const port = 9001;
/* We store the listen socket here, so that we can shut it down later */
let listenSocket;
const app = uWS./*SSL*/App({
key_file_name: 'misc/key.pem',
cert_file_name: 'misc/cert.pem',
passphrase: '1234'
}).get('/shutdown', (res, req) => {
if (listenSocket) {
res.end('Okay, shutting down now!');
/* This function is provided directly by µSockets */
uWS.us_listen_socket_close(listenSocket);
listenSocket = null;
} else {
/* We just refuse if alrady shutting down */
res.close();
}
}).listen(port, (token) => {
/* Save the listen socket for later shut down */
listenSocket = token;
/* Did we even manage to listen? */
if (token) {
console.log('Listening to port ' + port);
/* Stop listening soon */
setTimeout(() => {
console.log('Shutting down now');
uWS.us_listen_socket_close(listenSocket);
listenSocket = null;
}, 1000);
} else {
console.log('Failed to listen to port ' + port);
}
});
/* This is questionable */
process.on('beforeExit', () => {
console.log('Forcefully freeing app now');
app.forcefully_free();
});