46 lines
1.2 KiB
JavaScript
46 lines
1.2 KiB
JavaScript
/* 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();
|
|
});
|