javascript - Node.JS 单套接字,多个事件(上传)

标签 javascript node.js callback socket.io jquery-file-upload

我正在开发一个上传跟踪器(进度条等)。

因此,对于我的前端,我使用 jQuery 文件上传。 后端上传是使用单独的工作人员完成的,我使用 Redis pub/sub。 因此,为了连接前端和后端,我使用 Node.JS (socket.io)。

jQuery 文件上传有一个“done”回调函数,表示我们的文件已到达服务器。

这对于单个文件来说绝对没问题。

当我尝试同时上传 2 个以上文件时出现问题。 “done”回调函数附加到套接字监听器 2 次以上(如果我错了,请纠正我),作为输出,我得到如下内容:

579 " - progress: " 8.333333333333334
580 " - progress: " 8.333333333333334 
579 " - progress: " 16.666666666666668 
580 " - progress: " 16.666666666666668 
579 " - progress: " 25 
580 " - progress: " 25
....
579 " -> upload is finished!" 
580 " -> upload is finished!"

这是上传 2 个文件的示例。这根本没有任何意义,因为它们只能被一个接一个地处理。

所以它应该看起来像这样:

579 " - progress: " 8.333333333333334
579 " - progress: " 16.666666666666668 
579 " - progress: " 25
....

579 " -> upload is finished!"
580 " - progress: " 8.333333333333334
580 " - progress: " 16.666666666666668
....
580 " -> upload is finished!"

Node.js 服务器端工作得很好。 这是其中的日志:

RECEIVED  progress  FROM  upload-579
RECEIVED  progress  FROM  upload-579
RECEIVED  progress  FROM  upload-579
RECEIVED  progress  FROM  upload-579
RECEIVED  progress  FROM  upload-579
RECEIVED  progress  FROM  upload-579
RECEIVED  progress  FROM  upload-579
RECEIVED  progress  FROM  upload-579
RECEIVED  progress  FROM  upload-579
RECEIVED  progress  FROM  upload-579
RECEIVED  progress  FROM  upload-579
RECEIVED  done  FROM  upload-579
RECEIVED  progress  FROM  upload-580
RECEIVED  progress  FROM  upload-580
RECEIVED  progress  FROM  upload-580
RECEIVED  progress  FROM  upload-580
RECEIVED  progress  FROM  upload-580
RECEIVED  progress  FROM  upload-580
RECEIVED  progress  FROM  upload-580
RECEIVED  progress  FROM  upload-580
RECEIVED  progress  FROM  upload-580
RECEIVED  progress  FROM  upload-580
RECEIVED  progress  FROM  upload-580
RECEIVED  done  FROM  upload-580

它从 Redis channel 接收消息并向客户端发出适当的消息。 我认为问题出在客户端的某个地方,但我不知道如何修改那里的代码以获得我想要的。 可以采取什么措施将它们彼此分开吗?

附注

最佳答案

客户端的套接字事件回调将针对来自 Node.js 的任何发出消息而触发。这就是您看到重复日志消息的原因。在套接字消息中发送附加数据,或附加唯一事件。

关于javascript - Node.JS 单套接字,多个事件(上传),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25928036/

相关文章:

javascript - 如何根据数据集大小调整 Chart.js 高度。 ionic 3

javascript - Fabric .js |检查鼠标是否按下错误

javascript - mongo聚合添加日期和总和

javascript - Web 在 Cheerio 中抓取 HTML 表格

javascript - 将额外变量传递给回调函数

javascript - 将复选框值传递给 JavaScript

javascript - 重置 setInterval() 的定时器

javascript - 如何使用 Gulp.js 将流保存到多个目的地?

jquery - 如何将回调传递给 jQuery .click()?我需要回调吗?

matlab - WindowKeyPressFcn在程序中断后执行