minecluster/lib/server/sockets.js

47 lines
1.2 KiB
JavaScript
Raw Normal View History

import { Server as Skio } from "socket.io";
import { VERB, WARN, ERR } from "../util/logging.js";
import {
webConsoleLogs,
webConsoleRcon,
} from "../controllers/sub-controllers/console-controller.js";
async function rconSend(socket, m) {
if (!socket.rconClient)
return WARN("RCON", "Message sent before RCON connected!");
try {
const r = await socket.rconClient.send(m);
socket.emit("push", `[RCON]: ${r}`);
} catch (error) {
WARN("RCON", error);
}
}
const socketConnect = async (io, socket) => {
VERB("WS", "Websocket connecting");
socket.mcs = { serverName: socket.handshake.query.serverName };
try {
await webConsoleLogs(socket);
await webConsoleRcon(socket);
socket.on("msg", (m) => rconSend(socket, m));
} catch (err) {
ERR("SOCKETS", err);
socket.send("push", err);
socket.disconnect();
}
};
const socketAuth = (socket, next) => {
const { token } = socket.handshake.auth;
// next(new Error("Bad Token"));
next();
};
const applySockets = (server) => {
const io = new Skio(server);
io.on("connection", (socket) => socketConnect(io, socket));
VERB("WS", "Configured Websockets");
return io;
};
export default applySockets;