簡體   English   中英

Node.JS單個套接字,多個事件(上傳)

[英]Node.JS single socket, multiple events (uploads)

我正在開發一個上傳跟蹤器(進度欄等)。

因此對於我的前端,我使用jQuery File upload。 后端上傳是使用單獨的工作程序完成的,在那里我使用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通道接收消息,並向客戶端發出適當的消息。 我認為問題出在客戶端的某個地方,但是我無法弄清楚如何修改那里的代碼來獲得我想要的東西。 可以做些什么使它們彼此分離嗎?

PS

客戶端上的套接字事件回調將觸發來自Node.js的任何發射消息。 這就是為什么您看到重復的日志消息的原因。 在套接字消息中發送其他數據,或附加唯一事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM