【发布时间】:2014-09-19 06:54:17
【问题描述】:
我正在开发一个上传跟踪器(进度条等)。
所以对于我的前端,我使用 jQuery 文件上传。 后端上传是使用单独的工作人员完成的,我在那里使用 Redis pub/sub。 所以要连接前端和后端,我使用 Node.JS (socket.io)。
jQuery 文件上传有一个“done”回调函数,表示将我们的文件到达服务器。
这对于单个文件非常有效。
当我尝试同时上传 2 个以上文件时出现问题。 “完成”回调函数被附加到套接字侦听器 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 通道接收消息并向客户端发出适当的消息。 我认为问题出在客户端的某个地方,但我无法弄清楚如何修改那里的代码以获得我想要的。 有什么办法可以把它们分开吗?
附言
【问题讨论】:
-
为什么你认为上传不能同时发生?
-
只有一名工作人员处理上传。所以这是绝对不可能的。另外,请参阅我提供的日志。
-
一个 Node worker 还是一个 Redis worker?能否请您也展示一下 Node.js 代码?
-
一名延迟工作的工人。包含 node.js 代码
-
那么实际上传在哪里?
标签: javascript node.js callback socket.io jquery-file-upload