gpt4 book ai didi

javascript - Node Js 服务器接收 JSON 更新时刷新页面

转载 作者:行者123 更新时间:2023-12-03 02:19:08 25 4
gpt4 key购买 nike

我的应用程序是一个 Web 界面,用于监视电脑处理的“对象”的变化,特别是当它们超过特定阈值时。

Node Js 服务器在同一台 PC 上运行,其唯一用途是在表上显示数据,并在其中一个达到给定阈值时刷新数据。此时,计算“对象”的程序将打开一个到 Node Js 服务器的套接字并发送 json 数据。

我的问题是在用户浏览器上重新加载页面以显示新结果,而无需用户手动点击浏览器刷新按钮。

对于服务器,我使用了express、express-ejs-layouts和body-parser模块。

这是我的服务器代码:

// require our dependencies
var express = require('express');
var expressLayouts = require('express-ejs-layouts');
var bodyParser = require('body-parser');
var app = express();
var port = 3000;

// use ejs and express layouts
app.set('view engine', 'ejs');
app.use(expressLayouts);

// use body parser
app.use(bodyParser.json({extended : true}));

// route our app
var router = require('./app/routes');
app.use('/', router);


// set static files (css and images, etc) location
app.use(express.static(__dirname + '/public'));

// start the server
app.listen(port, function() {
console.log('app started');
});

抛开服务器的核心页面美学(CSS、图像、布局),为 GET 和 POST 请求提供服务位于 paths.js 文件中,在 GET 请求上,渲染页面,将 JSON 数据传递到包含表的 javascript 页面,在 POST 请求上,保存由我的“对象”计算器传递的 JSON。

这是routes.js代码:

// require express
var express = require('express');
var path = require('path');

// create our router object
var router = express.Router();

// export our router
module.exports = router;

router.post("/", function(request, response) {
global.exportage = request.body;
});

// route for our homepage
router.get('/displayobj', function(req, res) {
//res.send(global.exportage);
res.render('pages/displayobj',{data:global.exportage});
});

你怎么看我正在使用一个非常糟糕的全局变量来传递数据,但我想让它尽可能简单。

当收到新的 JSON 时,如何强制重新加载用户浏览器?

我尝试使用 location.reload(true) 但在执行过程中出现错误:“位置未定义”。

在我看来,问题在于服务器满足了浏览器发出的 GET 请求,并且没有发生任何其他事情,导致通信已经完成。我不想以固定的时间间隔刷新页面,而是使用新的 JSON 作为触发事件(阅读评论后编辑)。

最佳答案

您无法使用简单的 HTTP 请求从服务器到客户端进行实时通信。考虑使用长轮询或网络套接字。

最简单的解决方案是使用像 Socket.io 这样的库处理它。当内容需要刷新时,向客户端发送一个事件,然后使用 window.location.reload() 刷新或使用 DOM API 更新内容。

关于javascript - Node Js 服务器接收 JSON 更新时刷新页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49239263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com