aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/ActionUtilities.ts6
-rw-r--r--src/server/Initialization.ts29
-rw-r--r--src/server/Websocket/Websocket.ts3
-rw-r--r--src/server/database.ts11
-rw-r--r--src/server/index.ts2
5 files changed, 25 insertions, 26 deletions
diff --git a/src/server/ActionUtilities.ts b/src/server/ActionUtilities.ts
index c155796a8..4fe7374d1 100644
--- a/src/server/ActionUtilities.ts
+++ b/src/server/ActionUtilities.ts
@@ -72,4 +72,8 @@ export async function Prune(rootDirectory: string): Promise<boolean> {
return error === null;
}
-export const Destroy = (mediaPath: string) => new Promise<boolean>(resolve => fs.unlink(mediaPath, error => resolve(error === null))); \ No newline at end of file
+export const Destroy = (mediaPath: string) => new Promise<boolean>(resolve => fs.unlink(mediaPath, error => resolve(error === null)));
+
+export function addBeforeExitHandler(handler: NodeJS.BeforeExitListener) {
+ process.on("beforeExit", handler);
+}
diff --git a/src/server/Initialization.ts b/src/server/Initialization.ts
index 74770153d..1fb949221 100644
--- a/src/server/Initialization.ts
+++ b/src/server/Initialization.ts
@@ -19,7 +19,7 @@ import * as fs from 'fs';
import * as request from 'request';
import RouteSubscriber from './RouteSubscriber';
import { publicDirectory } from '.';
-import { logPort } from './ActionUtilities';
+import { logPort, addBeforeExitHandler } from './ActionUtilities';
import { timeMap } from './ApiManagers/UserManager';
import { blue, yellow } from 'colors';
@@ -27,18 +27,18 @@ import { blue, yellow } from 'colors';
from being exposed. */
export type RouteSetter = (server: RouteManager) => void;
export interface InitializationOptions {
- listenAtPort: number;
+ serverPort: number;
routeSetter: RouteSetter;
}
export default async function InitializeServer(options: InitializationOptions) {
- const { listenAtPort, routeSetter } = options;
- const server = buildWithMiddleware(express());
+ const { serverPort, routeSetter } = options;
+ const app = buildWithMiddleware(express());
- server.use(express.static(publicDirectory));
- server.use("/images", express.static(publicDirectory));
+ app.use(express.static(publicDirectory));
+ app.use("/images", express.static(publicDirectory));
- server.use("*", ({ user, originalUrl }, _res, next) => {
+ app.use("*", ({ user, originalUrl }, _res, next) => {
if (!originalUrl.includes("Heartbeat")) {
const userEmail = user?.email;
if (userEmail) {
@@ -48,19 +48,20 @@ export default async function InitializeServer(options: InitializationOptions) {
next();
});
- server.use(wdm(compiler, { publicPath: config.output.publicPath }));
- server.use(whm(compiler));
+ app.use(wdm(compiler, { publicPath: config.output.publicPath }));
+ app.use(whm(compiler));
- registerAuthenticationRoutes(server);
- registerCorsProxy(server);
+ registerAuthenticationRoutes(app);
+ registerCorsProxy(app);
const isRelease = determineEnvironment();
- routeSetter(new RouteManager(server, isRelease));
+ routeSetter(new RouteManager(app, isRelease));
- server.listen(listenAtPort, () => {
- logPort("server", listenAtPort);
+ const server = app.listen(serverPort, () => {
+ logPort("server", serverPort);
console.log();
});
+ addBeforeExitHandler(async () => { await new Promise<Error>(resolve => server.close(resolve)); });
return isRelease;
}
diff --git a/src/server/Websocket/Websocket.ts b/src/server/Websocket/Websocket.ts
index 2eb764945..60c34aa44 100644
--- a/src/server/Websocket/Websocket.ts
+++ b/src/server/Websocket/Websocket.ts
@@ -7,7 +7,7 @@ import { Search } from "../Search";
import * as io from 'socket.io';
import YoutubeApi from "../apis/youtube/youtubeApiSample";
import { GoogleCredentialsLoader } from "../credentials/CredentialsLoader";
-import { logPort } from "../ActionUtilities";
+import { logPort, addBeforeExitHandler } from "../ActionUtilities";
import { timeMap } from "../ApiManagers/UserManager";
import { green } from "colors";
@@ -53,6 +53,7 @@ export namespace WebSocket {
Utils.AddServerHandlerCallback(socket, MessageStore.GetRefField, GetRefField);
Utils.AddServerHandlerCallback(socket, MessageStore.GetRefFields, GetRefFields);
});
+ addBeforeExitHandler(async () => { await new Promise<void>(resolve => endpoint.close(resolve)); });
endpoint.listen(socketPort);
logPort("websocket", socketPort);
}
diff --git a/src/server/database.ts b/src/server/database.ts
index 4039e6203..5bdf1fc45 100644
--- a/src/server/database.ts
+++ b/src/server/database.ts
@@ -6,6 +6,7 @@ import { DashUploadUtils } from './DashUploadUtils';
import { Credentials } from 'google-auth-library';
import { GoogleApiServerUtils } from './apis/google/GoogleApiServerUtils';
import * as mongoose from 'mongoose';
+import { addBeforeExitHandler } from './ActionUtilities';
export namespace Database {
@@ -24,18 +25,10 @@ export namespace Database {
export async function tryInitializeConnection() {
try {
const { connection } = mongoose;
- process.on('SIGINT', () => {
- connection.close(() => {
- console.log(`SIGINT closed mongoose connection at ${url}`);
- process.exit(0);
- });
- });
+ addBeforeExitHandler(async () => { await new Promise<any>(resolve => connection.close(resolve)); });
if (connection.readyState === ConnectionStates.disconnected) {
await new Promise<void>((resolve, reject) => {
connection.on('error', reject);
- connection.on('disconnected', () => {
- console.log(`disconnecting mongoose connection at ${url}`);
- });
connection.on('connected', () => {
console.log(`mongoose established default connection at ${url}`);
resolve();
diff --git a/src/server/index.ts b/src/server/index.ts
index 2921ad2df..cef6ff476 100644
--- a/src/server/index.ts
+++ b/src/server/index.ts
@@ -111,5 +111,5 @@ function routeSetter({ isRelease, addSupervisedRoute, logRegistrationOutcome }:
endMessage: "completed preliminary functions\n",
action: preliminaryFunctions
});
- await initializeServer({ listenAtPort: 1050, routeSetter });
+ await initializeServer({ serverPort: 1050, routeSetter });
})();