Add us_listen_socket_close and graceful shutdown example

This commit is contained in:
Alex Hultman 2019-01-18 09:07:21 +01:00
parent ab829af8ce
commit 0fb6ec9034
3 changed files with 49 additions and 4 deletions

View file

@ -0,0 +1,39 @@
/* 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);
}
});