feature/IO-2924-Refactor-Production-Board-For-Sockets - Checkpoint
Signed-off-by: Dave Richer <dave@imexsystems.ca>
This commit is contained in:
@@ -3,7 +3,14 @@ require("dotenv").config({
|
||||
path: path.resolve(process.cwd(), `.env.${process.env.NODE_ENV || "development"}`)
|
||||
});
|
||||
|
||||
const { io, setSessionData, clearSessionData, getMultipleSessionData, addItemToEndOfList } = require("../../server");
|
||||
const {
|
||||
io,
|
||||
setSessionData,
|
||||
clearSessionData,
|
||||
getMultipleSessionData,
|
||||
addItemToEndOfList,
|
||||
pubClient
|
||||
} = require("../../server");
|
||||
|
||||
const { admin } = require("../firebase/firebase-handler");
|
||||
const logger = require("../utils/logger");
|
||||
@@ -130,15 +137,35 @@ function registerPbsApEvents(socket) {
|
||||
});
|
||||
}
|
||||
|
||||
const getRedisKeyForSocket = (socketId) => `socket:${socketId}:rooms`;
|
||||
|
||||
// Room management and broadcasting events
|
||||
function registerRoomAndBroadcastEvents(socket) {
|
||||
// Rejoin rooms on reconnect
|
||||
pubClient.lRange(getRedisKeyForSocket(socket.id), 0, -1, (err, rooms) => {
|
||||
if (rooms && rooms.length > 0) {
|
||||
rooms.forEach((room) => {
|
||||
socket.join(room);
|
||||
createLogEvent(socket, "DEBUG", `Client rejoined bodyshop room: ${room}`);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
socket.on("join-bodyshop-room", async (bodyshopUUID) => {
|
||||
socket.join(bodyshopUUID);
|
||||
|
||||
// Store room in Redis
|
||||
pubClient.rPush(getRedisKeyForSocket(socket.id), bodyshopUUID);
|
||||
|
||||
await createLogEvent(socket, "DEBUG", `Client joined bodyshop room: ${bodyshopUUID}`);
|
||||
});
|
||||
|
||||
socket.on("leave-bodyshop-room", async (bodyshopUUID) => {
|
||||
socket.leave(bodyshopUUID);
|
||||
|
||||
// Remove room from Redis
|
||||
pubClient.lRem(getRedisKeyForSocket(socket.id), 0, bodyshopUUID);
|
||||
|
||||
await createLogEvent(socket, "DEBUG", `Client left bodyshop room: ${bodyshopUUID}`);
|
||||
});
|
||||
|
||||
@@ -146,8 +173,12 @@ function registerRoomAndBroadcastEvents(socket) {
|
||||
io.to(bodyshopUUID).emit("bodyshop-message", message);
|
||||
await createLogEvent(socket, "INFO", `Broadcast message to bodyshop ${bodyshopUUID}`);
|
||||
});
|
||||
}
|
||||
|
||||
socket.on("disconnect", () => {
|
||||
// Optional: Cleanup Redis entry on disconnect if needed
|
||||
createLogEvent(socket, "DEBUG", `Client disconnected: ${socket.id}`);
|
||||
});
|
||||
}
|
||||
// DMS session clearing event
|
||||
function registerDmsClearSessionEvent(socket) {
|
||||
socket.on("clear-dms-session", async () => {
|
||||
|
||||
Reference in New Issue
Block a user