home-lab/backend/websocket.ts

34 lines
813 B
TypeScript

import { WebSocketServer } from "ws";
import { verifyToken } from "./lib/jwt";
import { createTerminalSession } from "./lib/terminal";
import { createVNCSession } from "./lib/vnc";
const createWsServer = (server: any) => {
const wss = new WebSocketServer({ server: server as never });
wss.on("connection", async (ws, req) => {
const url = new URL(req.url || "", `http://${req.headers.host}`);
const token = url.searchParams.get("token");
try {
await verifyToken(token || "");
} catch (err) {
// console.log(err);
ws.close();
return;
}
if (url.pathname === "/terminal") {
createTerminalSession(ws);
}
if (url.pathname === "/vnc") {
createVNCSession(ws);
}
ws.on("error", console.error);
});
};
export default createWsServer;