Merge pull request #41 from Legonzaur/main

Node Clusters and additional header for request compression
This commit is contained in:
Legonzaur
2023-05-29 14:13:03 +02:00
committed by GitHub
2 changed files with 38 additions and 15 deletions
+4 -1
View File
@@ -139,7 +139,10 @@ router.get(
',' + ',' +
Math.abs(new Date().getTime() - timeStart.getTime()) / 1000 + ',' + req.originalUrl Math.abs(new Date().getTime() - timeStart.getTime()) / 1000 + ',' + req.originalUrl
) )
res.status(200).send(data) const dataString = JSON.stringify(data)
const buffer = Buffer.from(dataString)
const size = buffer.length
res.status(200).setHeader('X-File-Size', size).setHeader('Content-Type', 'application/json').send(buffer)
} }
) )
+34 -14
View File
@@ -1,4 +1,6 @@
import * as dotenv from 'dotenv' import * as dotenv from 'dotenv'
import cluster from 'cluster'
import os from 'os'
dotenv.config() dotenv.config()
import express from 'express' import express from 'express'
import cors from 'cors' import cors from 'cors'
@@ -7,25 +9,43 @@ import { dbReady } from './db/db'
import processAll from './process/process' import processAll from './process/process'
import listenKills from './process/onKill' import listenKills from './process/onKill'
const app = express() const cCPUs = os.cpus().length;
const port = 3000 const port = 3000
app.use(express.json()) if (cluster.isPrimary) {
// Create a worker for each CPU
for (let i = 0; i < cCPUs; i++) {
cluster.fork();
}
cluster.on('online', function (worker) {
console.log('Worker ' + worker.process.pid + ' is online.');
});
cluster.on('exit', function (worker, code, signal) {
console.log('worker ' + worker.process.pid + ' died.');
});
}
app.use(cors())
app.get('/', (req, res) => {
res.send('Tone client API online')
})
app.use('/', client)
export default export default
new Promise(async (resolve, reject) => { new Promise(async (resolve, reject) => {
await dbReady() if (!cluster.isPrimary) {
await processAll() const app = express()
await listenKills() app.use(express.json())
const listenServer = app.listen(port, '0.0.0.0', () => { app.use(cors({ exposedHeaders: ['X-File-Size', 'Content-Encoding'] }))
console.log(`Tone client api listening on port ${port}`) app.get('/', (req, res) => {
resolve(listenServer) res.send('Tone client API online')
}) })
app.use('/', client)
await dbReady()
await processAll()
await listenKills()
const listenServer = app.listen(port, '0.0.0.0', () => {
console.log(`Tone client api listening on port ${port}`)
resolve(listenServer)
})
}
}) })