Files
FrozenFriendsYume/packages/backend/built/boot/worker.js
T
2026-07-26 18:25:37 +09:00

34 lines
994 B
JavaScript

import repl from "node:repl";
import cluster from "node:cluster";
import { initDb } from "../db/postgre.js";
import config from "../config/index.js";
/**
* Init worker process
*/ export async function workerMain() {
await initDb();
if (!config.onlyQueueProcessor) {
// start server
await import("../server/index.js").then((x)=>x.default());
}
// start job queue
import("../queue/index.js").then((x)=>x.default());
if (cluster.isWorker) {
// Send a 'ready' message to parent process
process.send("ready");
cluster.worker.on("message", (message, handle)=>{
if (message == "debug-shell") spawnWorkerShell(handle);
});
}
}
function spawnWorkerShell(socket) {
const r = repl.start({
input: socket,
output: socket
});
r.defineCommand("worker", (iid)=>{
r.close();
const id = parseInt(iid.trim());
cluster.workers[id].send("debug-shell", socket);
});
}