rework exit hooks
parent
167d710cfe
commit
e344377025
76
bin/www.js
76
bin/www.js
|
|
@ -3,20 +3,19 @@ import http from "node:http";
|
|||
import * as configFunctions from "../helpers/functions.config.js";
|
||||
import exitHook from "exit-hook";
|
||||
import ntfyPublish from "@cityssm/ntfy-publish";
|
||||
import debug from "debug";
|
||||
const debugWWW = debug("lot-occupancy-system:www");
|
||||
let httpServer;
|
||||
import Debug from "debug";
|
||||
const debug = Debug("lot-occupancy-system:www");
|
||||
const onError = (error) => {
|
||||
if (error.syscall !== "listen") {
|
||||
throw error;
|
||||
}
|
||||
switch (error.code) {
|
||||
case "EACCES": {
|
||||
debugWWW("Requires elevated privileges");
|
||||
debug("Requires elevated privileges");
|
||||
process.exit(1);
|
||||
}
|
||||
case "EADDRINUSE": {
|
||||
debugWWW("Port is already in use.");
|
||||
debug("Port is already in use.");
|
||||
process.exit(1);
|
||||
}
|
||||
default: {
|
||||
|
|
@ -28,37 +27,44 @@ const onListening = (server) => {
|
|||
const addr = server.address();
|
||||
if (addr) {
|
||||
const bind = typeof addr === "string" ? "pipe " + addr : "port " + addr.port.toString();
|
||||
debugWWW("Listening on " + bind);
|
||||
debug("Listening on " + bind);
|
||||
}
|
||||
};
|
||||
const ntfyStartupConfig = configFunctions.getProperty("application.ntfyStartup");
|
||||
const httpPort = configFunctions.getProperty("application.httpPort");
|
||||
if (httpPort) {
|
||||
httpServer = http.createServer(app);
|
||||
httpServer.listen(httpPort);
|
||||
httpServer.on("error", onError);
|
||||
httpServer.on("listening", () => {
|
||||
onListening(httpServer);
|
||||
});
|
||||
debugWWW("HTTP listening on " + httpPort.toString());
|
||||
const ntfyStartupConfig = configFunctions.getProperty("application.ntfyStartup");
|
||||
if (ntfyStartupConfig) {
|
||||
const topic = ntfyStartupConfig.topic;
|
||||
const server = ntfyStartupConfig.server;
|
||||
const ntfyMessage = {
|
||||
topic,
|
||||
title: configFunctions.getProperty("application.applicationName"),
|
||||
message: "Application Started",
|
||||
tags: ["arrow_up"]
|
||||
};
|
||||
if (server) {
|
||||
ntfyMessage.server = server;
|
||||
}
|
||||
await ntfyPublish(ntfyMessage);
|
||||
}
|
||||
}
|
||||
exitHook(() => {
|
||||
if (httpServer) {
|
||||
debugWWW("Closing HTTP");
|
||||
httpServer.close();
|
||||
}
|
||||
const httpServer = http.createServer(app);
|
||||
httpServer.listen(httpPort);
|
||||
httpServer.on("error", onError);
|
||||
httpServer.on("listening", () => {
|
||||
onListening(httpServer);
|
||||
});
|
||||
debug("HTTP listening on " + httpPort.toString());
|
||||
exitHook(() => {
|
||||
debug("Closing HTTP");
|
||||
httpServer.close();
|
||||
});
|
||||
if (ntfyStartupConfig) {
|
||||
const topic = ntfyStartupConfig.topic;
|
||||
const server = ntfyStartupConfig.server;
|
||||
const ntfyStartupMessage = {
|
||||
topic,
|
||||
title: configFunctions.getProperty("application.applicationName"),
|
||||
message: "Application Started",
|
||||
tags: ["arrow_up"]
|
||||
};
|
||||
const ntfyShutdownMessage = {
|
||||
topic,
|
||||
title: configFunctions.getProperty("application.applicationName"),
|
||||
message: "Application Shut Down",
|
||||
tags: ["arrow_down"]
|
||||
};
|
||||
if (server) {
|
||||
ntfyStartupMessage.server = server;
|
||||
ntfyShutdownMessage.server = server;
|
||||
}
|
||||
await ntfyPublish(ntfyStartupMessage);
|
||||
exitHook(() => {
|
||||
debug("Sending ntfy notification");
|
||||
ntfyPublish(ntfyShutdownMessage);
|
||||
});
|
||||
}
|
||||
|
|
|
|||
90
bin/www.ts
90
bin/www.ts
|
|
@ -7,13 +7,12 @@ import http from "node:http";
|
|||
import * as configFunctions from "../helpers/functions.config.js";
|
||||
|
||||
import exitHook from "exit-hook";
|
||||
|
||||
import ntfyPublish from "@cityssm/ntfy-publish";
|
||||
import type * as ntfyTypes from "@cityssm/ntfy-publish/types";
|
||||
|
||||
import debug from "debug";
|
||||
const debugWWW = debug("lot-occupancy-system:www");
|
||||
|
||||
let httpServer: http.Server;
|
||||
import Debug from "debug";
|
||||
const debug = Debug("lot-occupancy-system:www");
|
||||
|
||||
interface ServerError extends Error {
|
||||
syscall: string;
|
||||
|
|
@ -29,14 +28,14 @@ const onError = (error: ServerError) => {
|
|||
switch (error.code) {
|
||||
// eslint-disable-next-line no-fallthrough
|
||||
case "EACCES": {
|
||||
debugWWW("Requires elevated privileges");
|
||||
debug("Requires elevated privileges");
|
||||
process.exit(1);
|
||||
// break;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-fallthrough
|
||||
case "EADDRINUSE": {
|
||||
debugWWW("Port is already in use.");
|
||||
debug("Port is already in use.");
|
||||
process.exit(1);
|
||||
// break;
|
||||
}
|
||||
|
|
@ -53,52 +52,61 @@ const onListening = (server: http.Server) => {
|
|||
|
||||
if (addr) {
|
||||
const bind = typeof addr === "string" ? "pipe " + addr : "port " + addr.port.toString();
|
||||
debugWWW("Listening on " + bind);
|
||||
debug("Listening on " + bind);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
/*
|
||||
* Initialize HTTP
|
||||
*/
|
||||
|
||||
const ntfyStartupConfig = configFunctions.getProperty("application.ntfyStartup");
|
||||
|
||||
const httpPort = configFunctions.getProperty("application.httpPort");
|
||||
|
||||
if (httpPort) {
|
||||
httpServer = http.createServer(app);
|
||||
const httpServer = http.createServer(app);
|
||||
|
||||
httpServer.listen(httpPort);
|
||||
httpServer.listen(httpPort);
|
||||
|
||||
httpServer.on("error", onError);
|
||||
httpServer.on("listening", () => {
|
||||
onListening(httpServer);
|
||||
});
|
||||
httpServer.on("error", onError);
|
||||
httpServer.on("listening", () => {
|
||||
onListening(httpServer);
|
||||
});
|
||||
|
||||
debugWWW("HTTP listening on " + httpPort.toString());
|
||||
|
||||
const ntfyStartupConfig = configFunctions.getProperty("application.ntfyStartup");
|
||||
|
||||
if (ntfyStartupConfig) {
|
||||
const topic = ntfyStartupConfig.topic;
|
||||
const server = ntfyStartupConfig.server;
|
||||
|
||||
const ntfyMessage: ntfyTypes.NtfyMessageOptions = {
|
||||
topic,
|
||||
title: configFunctions.getProperty("application.applicationName"),
|
||||
message: "Application Started",
|
||||
tags: ["arrow_up"]
|
||||
};
|
||||
|
||||
if (server) {
|
||||
ntfyMessage.server = server;
|
||||
}
|
||||
|
||||
await ntfyPublish(ntfyMessage);
|
||||
}
|
||||
}
|
||||
debug("HTTP listening on " + httpPort.toString());
|
||||
|
||||
exitHook(() => {
|
||||
if (httpServer) {
|
||||
debugWWW("Closing HTTP");
|
||||
httpServer.close();
|
||||
}
|
||||
debug("Closing HTTP");
|
||||
httpServer.close();
|
||||
});
|
||||
|
||||
if (ntfyStartupConfig) {
|
||||
const topic = ntfyStartupConfig.topic;
|
||||
const server = ntfyStartupConfig.server;
|
||||
|
||||
const ntfyStartupMessage: ntfyTypes.NtfyMessageOptions = {
|
||||
topic,
|
||||
title: configFunctions.getProperty("application.applicationName"),
|
||||
message: "Application Started",
|
||||
tags: ["arrow_up"]
|
||||
};
|
||||
|
||||
const ntfyShutdownMessage: ntfyTypes.NtfyMessageOptions = {
|
||||
topic,
|
||||
title: configFunctions.getProperty("application.applicationName"),
|
||||
message: "Application Shut Down",
|
||||
tags: ["arrow_down"]
|
||||
};
|
||||
|
||||
if (server) {
|
||||
ntfyStartupMessage.server = server;
|
||||
ntfyShutdownMessage.server = server;
|
||||
}
|
||||
|
||||
await ntfyPublish(ntfyStartupMessage);
|
||||
|
||||
exitHook(() => {
|
||||
debug("Sending ntfy notification");
|
||||
ntfyPublish(ntfyShutdownMessage);
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue