import { pubClient } from "modules/redis"; import { Server, Socket } from "socket.io"; export const handleConnectDispatch = (socket: Socket, io: Server) => async ({ logoffTime, selectedZone, }: { logoffTime: string; selectedZone: string; }) => { const userId = socket.data.user.id; // User ID aus dem JWT-Token const name = `${socket.data.user.firstname} ${socket.data.user.lastname[0]}. - ${socket.data.user.publicId}`; console.log("User connected to dispatch server"); await pubClient.json.set(`Dispatcher:${userId}`, "$", { logoffTime, name, loginTime: new Date().toISOString(), lastSeen: new Date().toISOString(), selectedZone, socketId: socket.id, }); socket.join("dispatchers"); // Dem Dispatcher-Raum beitreten socket.join(`user:${userId}`); // Dem User-Raum beitreten /* const keys = await pubClient.keys("Dispatcher:*"); await Promise.all( keys.map(async (key) => { return await pubClient.json.get(key); }), ); */ socket.on("disconnect", async () => { console.log("Disconnected from dispatch server"); await pubClient.json.del(`Dispatcher:${userId}`); }); socket.on("reconnect", async () => { console.log("Reconnected to dispatch server"); await pubClient.json.set(`Dispatcher:${userId}`, "$", { logoffTime, loginTime: new Date().toISOString(), lastSeen: new Date().toISOString(), name, selectedZone, socketId: socket.id, }); }); };