如何在不同的端口上运行多个Express服务器?

时间:2018-12-27 12:08:09

标签: javascript node.js express

过去一周学习节点,并掌握了节点并进行了表达。但是现在我面临一个问题。我试图在不同的端口上运行多个Express服务器,并希望它们在10秒后返回响应。运行该程序后,服务器可以正常运行,但是当我按下http://localhost:3000或服务器的任何URL时,请注意以下事项:
-在客户端,我在10秒后得到了所有服务器的正确响应
-服务器进入无限循环并在10秒的延迟后连续打印“正在返回数据...”

我尝试使用一个函数,使用js文件导出服务器,并使用另一个类导入服务器并在for循环内调用。但是服务器在延迟10秒后会不断打印“正在返回数据...”。下面是我的代码:

var express = require('express');

const data = '{"key":"value"}';
const server = function (port) {
    let app = express();
    app.get('/', (req, res) => {
        setInterval(function () {
            console.log('returning data...')
            res.end(data);
        }, 10000); //want a delay of 10 secs before server sends a response
    })
    app.listen(port, () => console.log("Server listening at http://%s:%s",
    "localhost", port))
}

console.log('\nStarting servers.......')
for (var i = 0; i < 5; i++) {
    server(3000 + i)
}

2 个答案:

答案 0 :(得分:4)

您需要从express创建多个应用程序实例。下面是从同一文件在不同端口上启动多个服务器的代码段。

var express = require('express');

let app1 = express();
let app2 = express();

app1.listen(3000, () => {
  console.log("Started server on 3000");
});

app2.listen(3002, () => {
  console.log("Started server on 3002");   
});

答案 1 :(得分:1)

您使用的是window.setInterval而不是window.setTimeout,这就是为什么要多次运行的原因。