我对node.js完全陌生,我们有一个可运行的预构建应用程序,但它不使用集群,因此仅在一个核心上运行,因此清除了服务器。运行Nodejs 10.22.0。
以下代码在原始app.js文件中运行
const express = require('express'),
app = express();
const cors = require('cors');
const routeOne = require('./routeOne/routes');
const routeTwo = require('./routeTwo/routes/routes');
const port = process.env.PORT || 5000;
app.use(cors());
app.get('/', function (req, res) {
res.send('Node Server Online');
});
app.use('/routeOne', routeOne);
app.use('/routeTwo', routeTwo);
server = app.listen(port, () => console.log(`Listening on port ${port}`));
let io = require('socket.io')(server);
//Edit socket routes
// io.on('connection', socketRoutes);
// io.on('connection');
我从Node.js on multi-core machines中发现了下面的集群代码,但是由于我不太了解它在做什么,所以我完全迷失了使用它的机会。
var cluster = require('cluster');
var http = require('http');
var numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', function(worker, code, signal) {
console.log('worker ' + worker.process.pid + ' died');
});
} else {
// Workers can share any TCP connection
// In this case its a HTTP server
http.createServer(function(req, res) {
res.writeHead(200);
res.end("hello world\n");
}).listen(8000);
}
尝试将应用程序/服务器代码包装在http.createServer函数中,但它会破坏服务器。尝试在if集群语句周围的get请求上输出res.send,只是回想它没有运行isMaster。
不知道我在做什么,但是现在当我与几个用户一起使用该应用程序时,它会锁定。有人可以帮忙吗?