summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-04-22 22:00:25 +0200
committerFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-04-22 22:00:25 +0200
commit9705b01fdc760e7583576e6d6ec1f3772e78abe8 (patch)
treeacc0c035288fcf49602b2e235ddf169b1d9c09cf /src
parent:art: change default port to 1000 + CORS (diff)
downloadserver-9705b01fdc760e7583576e6d6ec1f3772e78abe8.tar.xz
:zap: :sparkles: prod multi threading
Diffstat (limited to 'src')
-rw-r--r--src/index.ts30
1 files changed, 23 insertions, 7 deletions
diff --git a/src/index.ts b/src/index.ts

index 6a0fabc4..471bf90c 100644 --- a/src/index.ts +++ b/src/index.ts
@@ -5,13 +5,29 @@ import "missing-native-js-functions"; import { config } from "dotenv"; config(); import { DiscordServer } from "./Server"; +import cluster from "cluster"; +import os from "os"; +const cores = os.cpus().length; -var port = Number(process.env.PORT); -if (isNaN(port)) port = 1000; +if (cluster.isMaster && process.env.production == "true") { + console.log(`Primary ${process.pid} is running`); -const server = new DiscordServer({ port }); -server.start().catch(console.error); + // Fork workers. + for (let i = 0; i < cores; i++) { + cluster.fork(); + } -// @ts-ignore -global.server = server; -export default server; + cluster.on("exit", (worker, code, signal) => { + console.log(`worker ${worker.process.pid} died, restart worker`); + cluster.fork(); + }); +} else { + var port = Number(process.env.PORT); + if (isNaN(port)) port = 1000; + + const server = new DiscordServer({ port }); + server.start().catch(console.error); + + // @ts-ignore + global.server = server; +}