我在nodejs中运行了一个服务器,在那里我上传了一个大型数据文件。我在客户端上使用angular-file-upload来执行此操作,这有助于我通过一组回调函数跟踪上传进度。
但是当上传完成后,服务器开始处理数据(转换格式并上传到用户指定的数据库)。我想以与上传相同的方式跟踪这一进展,开始另一个进度条。
这样做的正确方法是什么?通过互联网,我已经明白套接字可能是要走的路。这会使我的angular-file-upload过时,还是有其他方法可以做到这一点?上传完成后是否设置了新连接,还是使用上传连接,并将进度信息返回给客户端?
Socket.io确实有一套关于如何设置聊天向客户端发送消息的好教程,但这并没有真正涵盖我更复杂的情况。
任何指向正确方向的人都会非常感激。
答案 0 :(得分:1)
如果您想获得进度的实时状态,那么一旦文件上传完成,您就必须立即打开套接字连接以获取有关您需要数据库的服务器端逻辑进度的数据随着进展的不断更新。
但执行很麻烦,因为你必须使用像redis这样的数据库来以有效的方式跟踪进度,这将再次增加项目的体系结构,从而增加维护工作量,即使有一些很好的socket.io的教程,我的解决方案是使用像firebase或Back& amp;的实时后端。 (拼写回来)。
上传文件后,您的后端将继续向firebase发布当前进程和进度,并且您的客户端将听取这些更改,并且由于angulars 2路数据绑定,任何更改都会自动反映在您的UI中。