Node.js 在处理大数据期间显示进度
我有一个问题,我有一个web应用程序要运行,需要处理一些大文件。这可能需要5秒钟,所以在此期间,我想向用户显示该文件正在处理中,或者最好是发送信息多少时间结束。这是第一页,我不能发送两次res.render,那么如何做到这一点Node.js 在处理大数据期间显示进度,node.js,socket.io,Node.js,Socket.io,我有一个问题,我有一个web应用程序要运行,需要处理一些大文件。这可能需要5秒钟,所以在此期间,我想向用户显示该文件正在处理中,或者最好是发送信息多少时间结束。这是第一页,我不能发送两次res.render,那么如何做到这一点 var fileinarray = require('./readfile'); app.get('/', function(req, res){ var dataready = fileinarray; res.render('index',
var fileinarray = require('./readfile');
app.get('/', function(req, res){
var dataready = fileinarray;
res.render('index', {data: dataready});
});
那我该怎么做呢?我读了一些关于socke.io的书,但我现在不知道如何在我的案例中使用
感谢您的帮助如果您正在加载一个带有此请求的页面(看起来像),那么您将无法按其结构方式显示进度,因为浏览器正在等待下载您的页面,因此在您呈现页面之前无法在该窗口中显示任何内容。但是,您希望在页面到达之前显示进度
因此,你必须调整工作方式。首先,为了显示进度,浏览器必须有一个可以显示进度的工作页面。这意味着浏览器不能等待页面到达。我能想到的最直接的方法是,首先呈现一个shell页面,服务器立即返回该页面(无需等待原始内容)。在该shell页面中,您有代码来显示进度,并向服务器发出请求以获取长时间运行的数据。使用Ajax和webSockets有几种方法可以实现这一点。我将概述一些组合:
全部使用Ajax
很抱歉,但是如何使用节点在客户端呈现shell页面?我在node?@cyprian中找不到如何执行此操作的任何信息-在您在问题中显示的
app.get()
中,您在那里呈现shell页面。然后,您使用shell页面中的客户端Javascript获取实际内容(使用我概述的任何一种方法),显示进度,然后将最终内容插入shell页面。好的,现在我明白了。我认为websocket将是我网站上最好的,因为我几乎所有的内容都取决于接收到的数据。使用socket,我可以轻松地发送部分数据并动态创建内容。又是Thx