pollo/app/services/emitter.server.ts

39 lines
975 B
TypeScript
Raw Normal View History

2023-04-20 04:20:00 -06:00
import { EventEmitter } from "events";
2023-12-01 14:57:31 -07:00
import { publishToChannel, subscribeToChannel } from "./redis.server";
2023-12-15 10:44:20 -07:00
import "dotenv/config";
2023-04-20 04:20:00 -06:00
let emitter: EventEmitter;
declare global {
var __emitter: EventEmitter | undefined;
}
if (process.env.NODE_ENV === "production") {
emitter = new EventEmitter();
} else {
if (!global.__emitter) {
global.__emitter = new EventEmitter();
}
emitter = global.__emitter;
}
2023-12-01 14:57:31 -07:00
if (process.env.REDIS_URL) {
subscribeToChannel("nodes", (message: string) => {
console.log(`[MULTI-NODE] RECEIVED ${message} EVENT FROM ANOTHER NODE!`);
const parsedMessage = message.split('"')[1];
emitter.emit(parsedMessage);
});
emitter.on("nodes", async (message: string) => {
2023-12-14 17:32:15 -07:00
emitter.emit(message);
2023-12-01 14:57:31 -07:00
await publishToChannel("nodes", message);
});
} else {
emitter.on("nodes", async (message: string) => {
console.log(`[SINGLE NODE] RECEIVED ${message} EVENT!`);
emitter.emit(message);
});
}
2023-04-20 04:20:00 -06:00
export { emitter };