过去一周学习节点,并掌握了节点并进行了表达。但是现在我面临一个问题。我试图在不同的端口上运行多个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)
}
答案 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,这就是为什么要多次运行的原因。