Skip to content

Commit

Permalink
Merge pull request #422 from mStirner/dev
Browse files Browse the repository at this point in the history
Working on issues
  • Loading branch information
mStirner committed Jan 21, 2024
2 parents 59c02ee + 11aaca7 commit dd96f09
Showing 1 changed file with 42 additions and 0 deletions.
42 changes: 42 additions & 0 deletions system/init/init.http-server.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ module.exports = (logger) => {

logger.debug("Init http server...");

// store active sockets from requests
// see #345
const sockets = new Set();

const servers = [

// http server for ip/port
Expand All @@ -15,6 +19,16 @@ module.exports = (logger) => {

let server = http.createServer();

server.on("connection", (socket) => {

sockets.add(socket);

socket.on("close", () => {
sockets.delete(socket);
});

});

server.on("error", (err) => {
logger.error(err, `Could not start http server: ${err.message}`);
reject(err);
Expand All @@ -33,6 +47,11 @@ module.exports = (logger) => {
logger.info(`HTTP Server closed on http://${process.env.HTTP_ADDRESS}:${process.env.HTTP_PORT}`);
});

// NOTE: Route handler get required/create twice:
// instead, require router file global
// and pass/move the request handler here
// thus prevents to create 2 express apps for each server
// "routes/index.js" should export the express app
require("../../routes/index.js")(server);

// bind/start http server
Expand All @@ -49,6 +68,16 @@ module.exports = (logger) => {

let server = http.createServer();

server.on("connection", (socket) => {

sockets.add(socket);

socket.on("close", () => {
sockets.delete(socket);
});

});

server.on("error", (err) => {

logger.error(err, `Could not start http server: ${err.message}`);
Expand All @@ -68,6 +97,11 @@ module.exports = (logger) => {
logger.info(`HTTP Server closed on ${process.env.HTTP_SOCKET}`);
});

// NOTE: Route handler get required/create twice:
// instead, require router file global
// and pass/move the request handler here
// thus prevents to create 2 express apps for each server
// "routes/index.js" should export the express app
require("../../routes/index.js")(server);

try {
Expand Down Expand Up @@ -98,9 +132,17 @@ module.exports = (logger) => {
Promise.all(servers).then((servers) => {

process.once("SIGINT", () => {

// see #345
// close all active http sockets/requests
for (const socket of sockets.values()) {
socket.destroy();
}

servers.forEach((server) => {
server.close();
});

});

resolve();
Expand Down

0 comments on commit dd96f09

Please sign in to comment.