diff --git a/package.json b/package.json index 9a7bd2f..1297199 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ }, "scripts": { "start": "concurrently -n server,client -c blue,green \"npm run start_server\" \"npm run start_client\"", - "start_server": "cd server && NODE_ENV=development nodemon -e mjs,lean --exec \"(cd leanserver && lake build) && (cd testgame && lake exe cache get && lake build) && node ./index.mjs\"", + "start_server": "cd server && NODE_ENV=development nodemon -e mjs --exec \"node ./index.mjs\"", "start_client": "NODE_ENV=development webpack-dev-server --hot", "build": "npm run build_server && npm run build_client", "build_server": "server/build.sh", diff --git a/server/index.mjs b/server/index.mjs index 9c0c394..a07dab6 100644 --- a/server/index.mjs +++ b/server/index.mjs @@ -38,19 +38,23 @@ if (isDevelopment) { const queue = [] const queueLength = 5 +function startServerProcess() { + const serverProcess = cp.spawn(cmd, cmdArgs, { cwd }) + serverProcess.on('error', error => + console.error(`Launching Lean Server failed: ${error}`) + ); + if (serverProcess.stderr !== null) { + serverProcess.stderr.on('data', data => + console.error(`Lean Server: ${data}`) + ); + } + return serverProcess +} + /** start Lean Server processes to refill the queue */ function fillQueue() { while (queue.length < queueLength) { - const serverProcess = cp.spawn(cmd, cmdArgs, { cwd }) - serverProcess.on('error', error => - console.error(`Launching Lean Server failed: ${error}`) - ); - if (serverProcess.stderr !== null) { - serverProcess.stderr.on('data', data => - console.error(`Lean Server: ${data}`) - ); - } - + const serverProcess = startServerProcess() queue.push(serverProcess) } } @@ -58,9 +62,13 @@ function fillQueue() { fillQueue() wss.addListener("connection", function(ws) { - - const ps = queue.shift() // Pick the first Lean process; it's likely to be ready immediately - fillQueue() + let ps; + if (isDevelopment) { // Don't use queue in development + ps = startServerProcess() + } else { + ps = queue.shift() // Pick the first Lean process; it's likely to be ready immediately + fillQueue() + } const socket = { onMessage: (cb) => { ws.on("message", cb) },