qualiteer/lib/server/core/socket-server.js

56 lines
1.4 KiB
JavaScript
Raw Normal View History

2022-05-05 12:35:47 +00:00
import { Server as Skio } from "socket.io";
2022-10-15 11:47:47 +00:00
import evt from "../../common/sockets/events.js";
import modes from "../../common/sockets/modes.js";
2022-05-05 12:35:47 +00:00
2022-07-12 21:26:36 +00:00
import { initiator, executor, viewer } from "./client-listeners.js";
2022-05-05 12:35:47 +00:00
const socketDrop = (io, room, id) => {
const { rooms } = io.of("/").adapter;
const clients = rooms.get(room);
if (clients.size > 1 || clients.size === 0) return;
const socketId = Array.from(clients)[0];
const s = io.sockets.sockets.get(socketId);
s.disconnect();
};
2022-10-15 11:47:47 +00:00
const socketConnect = async (io, socket, jobs) => {
2022-05-05 12:35:47 +00:00
const { mode } = socket.handshake.query;
2022-10-15 11:47:47 +00:00
try {
switch (mode) {
case modes.INIT:
await initiator(socket, jobs);
break;
case modes.EXEC:
executor(io, socket, jobs);
break;
case modes.VIEW:
viewer(socket);
break;
default:
socket.send(evt.ERR, "Invalid Mode!");
socket.disconnect();
break;
}
} catch (err) {
console.log(err);
socket.send(evt.ERR, err);
socket.disconnect();
2022-05-05 12:35:47 +00:00
}
};
const socketAuth = (socket, next) => {
const { token } = socket.handshake.auth;
// next(new Error("Bad Token"));
next();
};
const applySockets = (server, jobs, options) => {
const io = new Skio(server);
io.on("connection", (socket) => socketConnect(io, socket, jobs));
io.of("/").adapter.on("leave-room", (room, id) => socketDrop(io, room, id));
return io;
2022-07-12 02:44:44 +00:00
cle;
2022-05-05 12:35:47 +00:00
};
export default applySockets;