Send connection: close header on shutdown
This commit is contained in:
1 parent
00dd345784
commit
4dec8921db
1 file changed
+9
-11
+9
-11
@@ -169,26 +169,24 @@ koa.use(
|
|||||||
flush: require("zlib").Z_SYNC_FLUSH
|
flush: require("zlib").Z_SYNC_FLUSH
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
koa.use(router.routes());
|
|
||||||
koa.use(koaStatic("./public"));
|
|
||||||
|
|
||||||
const server = http
|
const server = http
|
||||||
.createServer(koa.callback())
|
.createServer(koa.callback())
|
||||||
.listen(config.server.port, config.server.interface);
|
.listen(config.server.port, config.server.interface);
|
||||||
|
|
||||||
|
koa.use(async (ctx, next) => {
|
||||||
|
await next();
|
||||||
|
if (!server.listening) ctx.set("Connection", "close");
|
||||||
|
});
|
||||||
|
|
||||||
|
koa.use(router.routes());
|
||||||
|
koa.use(koaStatic("./public"));
|
||||||
|
|
||||||
function closeServer(timeout) {
|
function closeServer(timeout) {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
setTimeout(() => {
|
|
||||||
if (!resolve) return;
|
|
||||||
// Ignore HTTP requests from alive connections
|
|
||||||
server.removeListener("request", koa.callback());
|
|
||||||
server.setTimeout(1);
|
|
||||||
|
|
||||||
setTimeout(resolve, 1000);
|
|
||||||
}, timeout).unref();
|
|
||||||
|
|
||||||
// prevent new sockets to connect and close server eventually.
|
// prevent new sockets to connect and close server eventually.
|
||||||
server.close(resolve);
|
server.close(resolve);
|
||||||
|
setTimeout(resolve, timeout).unref();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user