我正在基于Node.js的网络应用中进行CSV导入。 大多数给定的CSV文件都有数万条记录,需要几分钟时间。
因此,在导入完成之前,我想向用户显示"目前导入..."消息。
我想要创建的内容类似于Github的分叉屏幕。按下repo右上角的fork按钮后,会显示消息" Forking / It只需要几秒钟。"直到叉完成 另外,我想添加进度条以指示处理过的记录的百分比。
目前我的实施是:
但是实施用户无法看到当前状态。甚至有时插座也会挂断。
我正在考虑重新实施:
但是,我不知道:
如何实现服务器端? 在此先感谢;)
答案 0 :(得分:3)
您需要在此处使用socket.io
来跟踪进度。收到CSV后,您的客户端就可以连接到套接字。
服务器:
io.on('connection', function (socket) {
console.log('CONNECTED');
socket.join('progressSession');
});
您可以定期发出progress
事件,让客户知道您已处理了多少条记录。 (我希望您以异步方式处理记录,或者至少可以在其间运行其他代码)
io.sockets.in('progressSession').emit('progress', noOfRecords);
并且,客户端可以监听progress
事件并将其显示给用户
var socket = io.connect('http://localhost:9000');
socket.on('progress' , function (status){
console.log(status);
// show status to the user
});
评论是否需要更清晰。
答案 1 :(得分:1)
立即发送请求,立即返回状态以确认或拒绝CSV valididy并完成响应。然后使用http://socket.io/之类的内容向客户端发送更新。