docker-redis - final cleanup
Signed-off-by: Dave Richer <dave@imexsystems.ca>
This commit is contained in:
33
server.js
33
server.js
@@ -12,8 +12,8 @@ const { instrument } = require("@socket.io/admin-ui");
|
||||
const { isString, isEmpty } = require("lodash");
|
||||
|
||||
const logger = require("./server/utils/logger");
|
||||
const applyRedisHelpers = require("./server/utils/redisHelpers");
|
||||
const applyIOHelpers = require("./server/utils/ioHelpers");
|
||||
const { applyRedisHelpers } = require("./server/utils/redisHelpers");
|
||||
const { applyIOHelpers } = require("./server/utils/ioHelpers");
|
||||
const { redisSocketEvents } = require("./server/web-sockets/redisSocketEvents");
|
||||
|
||||
// Load environment variables
|
||||
@@ -62,7 +62,7 @@ const SOCKETIO_CORS_ORIGIN_DEV = ["http://localhost:3333", "https://localhost:33
|
||||
* Middleware for Express app
|
||||
* @param app
|
||||
*/
|
||||
const applyMiddleware = (app) => {
|
||||
const applyMiddleware = ({ app }) => {
|
||||
app.use(compression());
|
||||
app.use(cookieParser());
|
||||
app.use(bodyParser.json({ limit: "50mb" }));
|
||||
@@ -80,7 +80,7 @@ const applyMiddleware = (app) => {
|
||||
* Route groupings for Express app
|
||||
* @param app
|
||||
*/
|
||||
const applyRoutes = (app) => {
|
||||
const applyRoutes = ({ app }) => {
|
||||
app.use("/", require("./server/routes/miscellaneousRoutes"));
|
||||
app.use("/notifications", require("./server/routes/notificationsRoutes"));
|
||||
app.use("/render", require("./server/routes/renderRoutes"));
|
||||
@@ -171,7 +171,7 @@ const connectToRedisCluster = () => {
|
||||
* @param server
|
||||
* @param app
|
||||
*/
|
||||
const applySocketIO = async (server, app) => {
|
||||
const applySocketIO = async ({ server, app }) => {
|
||||
const redisCluster = await connectToRedisCluster();
|
||||
|
||||
// Handle errors
|
||||
@@ -182,16 +182,17 @@ const applySocketIO = async (server, app) => {
|
||||
const pubClient = redisCluster;
|
||||
const subClient = pubClient.duplicate();
|
||||
|
||||
// https://github.com/redis/node-redis/blob/master/docs/clustering.md
|
||||
// https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/accessing-elasticache.html
|
||||
|
||||
pubClient.on("error", (err) => logger.log(`Redis pubClient error: ${err}`, "ERROR", "redis"));
|
||||
subClient.on("error", (err) => logger.log(`Redis subClient error: ${err}`, "ERROR", "redis"));
|
||||
|
||||
process.on("SIGINT", async () => {
|
||||
logger.log("Closing Redis connections...", "INFO", "redis", "api");
|
||||
await Promise.all([pubClient.disconnect(), subClient.disconnect()]);
|
||||
process.exit(0);
|
||||
try {
|
||||
await Promise.all([pubClient.disconnect(), subClient.disconnect()]);
|
||||
logger.log("Redis connections closed. Process will exit.", "INFO", "redis", "api");
|
||||
} catch (error) {
|
||||
logger.log(`Error closing Redis connections: ${error.message}`, "ERROR", "redis", "api");
|
||||
}
|
||||
});
|
||||
|
||||
const ioRedis = new Server(server, {
|
||||
@@ -259,16 +260,16 @@ const main = async () => {
|
||||
|
||||
const server = http.createServer(app);
|
||||
|
||||
const { pubClient, ioRedis } = await applySocketIO(server, app);
|
||||
const api = applyRedisHelpers(pubClient, app, logger);
|
||||
const ioHelpers = applyIOHelpers(app, api, ioRedis, logger);
|
||||
const { pubClient, ioRedis } = await applySocketIO({ server, app });
|
||||
const redisHelpers = applyRedisHelpers({ pubClient, app, logger });
|
||||
const ioHelpers = applyIOHelpers({ app, redisHelpers, ioRedis, logger });
|
||||
|
||||
// Legacy Socket Events
|
||||
require("./server/web-sockets/web-socket");
|
||||
|
||||
applyMiddleware(app);
|
||||
applyRoutes(app);
|
||||
redisSocketEvents(ioRedis, api, ioHelpers);
|
||||
applyMiddleware({ app });
|
||||
applyRoutes({ app });
|
||||
redisSocketEvents({ io: ioRedis, redisHelpers, ioHelpers, logger });
|
||||
|
||||
try {
|
||||
await server.listen(port);
|
||||
|
||||
Reference in New Issue
Block a user