mirror of
https://github.com/karma-riuk/crab-webapp.git
synced 2025-07-05 14:18:12 +02:00
made socket logic better
This commit is contained in:
@ -1,7 +1,6 @@
|
||||
import { Router } from "express";
|
||||
import multer from "multer";
|
||||
import { InvalidJsonFormatError } from "../utils/errors.js";
|
||||
import { io as socket } from "../socket.js";
|
||||
import { evaluate_comments } from "../utils/process_data.js";
|
||||
|
||||
const router = Router();
|
||||
@ -74,8 +73,18 @@ router.post("/submit/comments", upload.single("file"), async (req, res) => {
|
||||
throw error;
|
||||
}
|
||||
|
||||
socket.emit("started-processing");
|
||||
evaluate_comments(validatedData);
|
||||
const io = req.app.get("io");
|
||||
const header = req.get("X-Socket-Id");
|
||||
const socketId = header && header.trim();
|
||||
if (socketId && io.sockets.sockets.has(socketId)) {
|
||||
io.to(socketId).emit("started-processing");
|
||||
}
|
||||
|
||||
evaluate_comments(validatedData, (percent) => {
|
||||
if (!(socketId && io.sockets.sockets.has(socketId))) return;
|
||||
|
||||
io.to(socketId).emit("progress", { percent });
|
||||
});
|
||||
|
||||
res.status(200).json({
|
||||
message: "Answer submitted successfully",
|
||||
|
@ -5,13 +5,10 @@ function onConnect(socket) {
|
||||
console.log("Websocket client connected:", socket.id);
|
||||
}
|
||||
|
||||
let io;
|
||||
|
||||
function createSocketServer(app) {
|
||||
export function createSocketServer(app) {
|
||||
const httpServer = http.createServer(app);
|
||||
io = new Server(httpServer);
|
||||
const io = new Server(httpServer);
|
||||
io.on("connection", onConnect);
|
||||
app.set("io", io);
|
||||
return httpServer;
|
||||
}
|
||||
|
||||
export { createSocketServer, io };
|
||||
|
@ -1,29 +1,21 @@
|
||||
import { io as socket } from "../socket.js";
|
||||
|
||||
export const evaluate_comments = async (answers) => {
|
||||
export const evaluate_comments = async (answers, percent_cb) => {
|
||||
const total = Object.keys(answers).length;
|
||||
let i = 0;
|
||||
for (const [key, value] of Object.entries(answers)) {
|
||||
console.log(`Processing ${key}: ${value}...`);
|
||||
await new Promise((res) => setTimeout(res, 500));
|
||||
await new Promise((res) => setTimeout(res, 1000));
|
||||
console.log("Done");
|
||||
const data = {
|
||||
percent: Math.floor((++i / total) * 100),
|
||||
};
|
||||
socket.emit("progress", data);
|
||||
percent_cb(Math.floor((++i / total) * 100));
|
||||
}
|
||||
};
|
||||
|
||||
export const evaluate_refinement = async (answers) => {
|
||||
export const evaluate_refinement = async (answers, percent_cb) => {
|
||||
const total = Object.keys(answers).length;
|
||||
let i = 0;
|
||||
for (const [key, value] of Object.entries(answers)) {
|
||||
console.log(`Processing ${key}: ${value}...`);
|
||||
await new Promise((res) => setTimeout(res, 500));
|
||||
await new Promise((res) => setTimeout(res, 1000));
|
||||
console.log("Done");
|
||||
const data = {
|
||||
percent: Math.floor((++i / total) * 100),
|
||||
};
|
||||
socket.emit("progress", data);
|
||||
percent_cb(Math.floor((++i / total) * 100));
|
||||
}
|
||||
};
|
||||
|
Reference in New Issue
Block a user