Ajax 显示在服务器端运行的长进程的状态
我正在基于Node.js的web应用程序中进行CSV导入。 大多数给定的CSV文件都有数万条记录,需要几分钟的时间 所以,在导入完成之前,我想向用户显示“当前正在导入…”消息 我想要创建的类似于Github的分叉屏幕。按下回购协议右上角的fork按钮后,会显示“Forking/应该只需要几秒钟”的消息,直到fork完成。 此外,我希望添加进度条,以指示处理记录的百分比 我目前的实施是:Ajax 显示在服务器端运行的长进程的状态,ajax,node.js,Ajax,Node.js,我正在基于Node.js的web应用程序中进行CSV导入。 大多数给定的CSV文件都有数万条记录,需要几分钟的时间 所以,在导入完成之前,我想向用户显示“当前正在导入…”消息 我想要创建的类似于Github的分叉屏幕。按下回购协议右上角的fork按钮后,会显示“Forking/应该只需要几秒钟”的消息,直到fork完成。 此外,我希望添加进度条,以指示处理记录的百分比 我目前的实施是: 客户端使用CSV数据发送请求 服务器进程接收到CSV并将记录插入数据库 如果CSV有效,服务器响应200 但通
提前感谢;) 按原样发送请求,立即返回状态以确认或拒绝CSV Validdy并完成响应。然后使用类似的方法向客户端发送更新。您需要在此处使用
socket.io
来跟踪进度。一旦您收到CSV,您的客户端就可以连接到套接字
服务器:
io.on('connection', function (socket) {
console.log('CONNECTED');
socket.join('progressSession');
});
您可以定期发出progress
事件,让客户端知道您处理了多少条记录。(我希望您正在异步处理记录,或者至少可以在其间运行一些其他代码)
而且,客户端可以监听进度
事件并将其显示给用户
var socket = io.connect('http://localhost:9000');
socket.on('progress' , function (status){
console.log(status);
// show status to the user
});
如果需要进一步澄清,请发表评论
var socket = io.connect('http://localhost:9000');
socket.on('progress' , function (status){
console.log(status);
// show status to the user
});