如何设置Interval Express应用程序



我在谷歌上搜索了一段时间,尝试了一些东西,并想出了各种奇怪的解决方案来解决我的问题,但没有真正取得进展。我的问题是,我该如何将express.js-应用程序的Interval设置为每30秒运行一次?

原因是我有一堆变量,每隔30秒就会发生变化,我需要重新呈现页面才能显示这些变量。我提出的"解决方案"遇到了EADDRINUSE错误,因为我试图在与旧服务器相同的端口上创建一个新服务器,所以我知道需要做一些事情来避免这种情况,但怎么办?

如果有人想知道我试过什么,我试过process.exit(并让PM2重新启动我的应用程序)、setInterval,故意破坏我的应用,让PM2重启,甚至开始重写所有内容,让web套接字在客户端和服务器之间来回运行,但我觉得这让问题过于复杂了(也许),因为如果我明白怎么做的话,标准的setInterval可以解决所有问题。

下面是我的快递:

var express = require('express');
var app = express();
var ejs = require('ejs');
var config = require('./config');
app.set('view engine', 'html');
app.engine('html', ejs.renderFile);
app.get("/", function(req, res){
app.use(express.static(__dirname + '/views'));
async(function(variables) {
res.render('index', 
{
// stuff to render
});
});
function async(callback) {
// several variables...
callback(variables);
}

});
app.listen(config.port, "0.0.0.0");

你想在谷歌上搜索的东西有:彗星、长拉、网络套接字、事件源。

基本上,这就是我将如何处理这项任务:

  1. 在您的web服务器中具有全局状态,简单的setInterval更新它,setInterval不断对网页进行AJAX调用。

  2. 使用web套接字,而不是setInterval(AJAX)向客户端推送新状态。

第二种方法更快更可取,但如果需要支持较旧的浏览器,则可能需要回退。

您确定这是正确的方法吗?这对我来说似乎不正确。我不会这么做。

您必须使用一些JS脚本(使用AJAX/WS自动刷新页面或更新值)或等效的元标记在客户端上设置刷新功能。

最新更新