Spaces:
Running
Running
| 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}`); | |
| }); |