【问题标题】:Node.JS single socket, multiple events (uploads)Node.JS 单套接字,多事件(上传)
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 2015-05-18
    相关资源
    最近更新 更多