我正在基于 Node.js 的 Web 应用程序中进行 CSV 导入。大多数给定的 CSV 文件都有数万条记录,并且需要几分钟的时间。
因此,在导入完成之前,我想向用户显示“当前正在导入...”消息。
我想要创建的内容类似于 Github 的分叉屏幕。按存储库右上角的分叉按钮后,它会显示消息“分叉/应该只需要几秒钟”。直到 fork 完成。此外,我想添加进度条来指示已处理记录的百分比。
目前我的实现是:
但实施后用户无法看到当前状态。甚至有时候socket会挂掉。
我正在考虑以下重新实现:
但是,我不知道:
服务器端如何实现?提前致谢 ;)
您需要使用socket.io此处来跟踪进度。一旦您收到 CSV,您的客户端就可以连接到套接字。
服务器:
io.on('connection', function (socket) {
console.log('CONNECTED');
socket.join('progressSession');
});
Run Code Online (Sandbox Code Playgroud)
您可以定期发出progress事件,让客户端知道您已处理了多少条记录。(我希望您异步处理记录,或者至少可以在两者之间运行一些其他代码)
io.sockets.in('progressSession').emit('progress', noOfRecords);
Run Code Online (Sandbox Code Playgroud)
并且,客户端可以监听progress事件并将其显示给用户
var socket = io.connect('http://localhost:9000');
socket.on('progress' , function (status){
console.log(status);
// show status to the user
});
Run Code Online (Sandbox Code Playgroud)
如果需要更清晰的说明,请发表评论。