import app from './app.js'; let port = process.env.PORT || 8083 import express from 'express'; import { createServer } from 'http'; import { Server } from 'socket.io'; const server = createServer(app); const io = new Server(server); const usersSubscribedToJobs = new Map(); app.observer = (job_id, msg) => { const subscribers = usersSubscribedToJobs.get(job_id); if (subscribers) { subscribers.forEach((socket) => { socket.emit('job_status', { job_id, msg }); }); } }; io.on('connection', (socket) => { console.log('A user connected'); socket.on('subscribe_job', (job_id) => { if (!usersSubscribedToJobs.has(job_id)) { usersSubscribedToJobs.set(job_id, new Set()); } usersSubscribedToJobs.get(job_id).add(socket); console.log(`User subscribed to job: ${job_id}`); }); socket.on('unsubscribe_job', (job_id) => { if (usersSubscribedToJobs.has(job_id)) { usersSubscribedToJobs.get(job_id).delete(socket); console.log(`User unsubscribed from job: ${job_id}`); } }); socket.on('disconnect', () => { console.log('User disconnected'); usersSubscribedToJobs.forEach((subscribers, job_id) => { subscribers.delete(socket); }); }); }); server.listen(port, () => { console.log(`Remote Render Server listening on port ${port}`); });