docker-redis - local tests
Signed-off-by: Dave Richer <dave@imexsystems.ca>
This commit is contained in:
@@ -66,6 +66,15 @@ services:
|
||||
volumes:
|
||||
- .:/app
|
||||
- /app/node_modules # Prevents overwriting node_modules
|
||||
|
||||
socketio-admin-ui:
|
||||
image: maitrungduc1410/socket.io-admin-ui
|
||||
container_name: socketio-admin-ui
|
||||
networks:
|
||||
- redis-cluster-net
|
||||
ports:
|
||||
- "3333:80"
|
||||
|
||||
networks:
|
||||
redis-cluster-net:
|
||||
driver: bridge
|
||||
|
||||
41
server.js
41
server.js
@@ -11,7 +11,7 @@ const Redis = require("ioredis");
|
||||
const { createAdapter } = require("@socket.io/redis-adapter");
|
||||
const logger = require("./server/utils/logger");
|
||||
const { redisSocketEvents } = require("./server/web-sockets/redisSocketEvents");
|
||||
const { instrument } = require("@socket.io/admin-ui");
|
||||
const { instrument, RedisStore } = require("@socket.io/admin-ui");
|
||||
|
||||
const { isString, isEmpty } = require("lodash");
|
||||
const applyRedisHelpers = require("./server/utils/redisHelpers");
|
||||
@@ -103,18 +103,14 @@ const applyRoutes = (app) => {
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Apply Redis to the server
|
||||
* @param server
|
||||
* @param app
|
||||
*/
|
||||
const applySocketIO = async (server, app) => {
|
||||
const connectToRedisCluster = () => {
|
||||
const redisCluster = new Redis.Cluster(
|
||||
process.env.REDIS_URL
|
||||
? JSON.parse(process.env.REDIS_URL)
|
||||
: [
|
||||
{
|
||||
host: "redis://localhost:6379"
|
||||
host: "localhost",
|
||||
port: 6379
|
||||
}
|
||||
],
|
||||
{
|
||||
@@ -131,6 +127,27 @@ const applySocketIO = async (server, app) => {
|
||||
}
|
||||
);
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
redisCluster.on("ready", () => {
|
||||
logger.log(`[${process.env.NODE_ENV}] Redis cluster connection established.`, "INFO", "redis", "api");
|
||||
resolve(redisCluster);
|
||||
});
|
||||
|
||||
redisCluster.on("error", (err) => {
|
||||
logger.log(`[${process.env.NODE_ENV}] Redis cluster connection failed: ${err.message}`, "ERROR", "redis", "api");
|
||||
reject(err);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Apply Redis to the server
|
||||
* @param server
|
||||
* @param app
|
||||
*/
|
||||
const applySocketIO = async (server, app) => {
|
||||
const redisCluster = await connectToRedisCluster();
|
||||
|
||||
// Handle errors
|
||||
redisCluster.on("error", (err) => {
|
||||
logger.log(`[${process.env.NODE_ENV}] Redis ERROR`, "ERROR", "redis", "api");
|
||||
@@ -145,13 +162,6 @@ const applySocketIO = async (server, app) => {
|
||||
pubClient.on("error", (err) => logger.log(`Redis pubClient error: ${err}`, "ERROR", "redis"));
|
||||
subClient.on("error", (err) => logger.log(`Redis subClient error: ${err}`, "ERROR", "redis"));
|
||||
|
||||
// try {
|
||||
// // await Promise.all([pubClient.connect(), subClient.connect()]);
|
||||
// // logger.log(`[${process.env.NODE_ENV}] Connected to Redis`, "INFO", "redis", "api");
|
||||
// // } catch (redisError) {
|
||||
// // logger.log("Failed to connect to Redis", "ERROR", "redis", redisError);
|
||||
// // }
|
||||
|
||||
process.on("SIGINT", async () => {
|
||||
logger.log("Closing Redis connections...", "INFO", "redis", "api");
|
||||
await Promise.all([pubClient.disconnect(), subClient.disconnect()]);
|
||||
@@ -161,6 +171,7 @@ const applySocketIO = async (server, app) => {
|
||||
const ioRedis = new Server(server, {
|
||||
path: "/wss",
|
||||
adapter: createAdapter(pubClient, subClient),
|
||||
store: new RedisStore(pubClient, subClient),
|
||||
cors: {
|
||||
origin: SOCKETIO_CORS_ORIGIN,
|
||||
methods: ["GET", "POST"],
|
||||
|
||||
Reference in New Issue
Block a user