2014-09-19 60 views
0

我正在開發一個上傳跟蹤器(進度條等)。Node.JS單個插槽,多個事件(上傳)

所以對於我的前端我使用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的信道消息,並且發射相應的消息至客戶端。 我認爲問題出在客戶端,但我無法弄清楚如何修改代碼以獲得我想要的。 可以做些什麼來將它們彼此分開?

P.S

+0

爲什麼你認爲上傳不能同時發生? – 2014-09-19 07:03:17

+0

只有一名工人處理上傳。 所以這是絕對不可能的。 另請參閱我提供的日誌。 – Dmitri 2014-09-19 07:04:24

+0

單節點員工或一名Redis員工?你能否也顯示Node.js代碼? – 2014-09-19 07:12:51

回答

1

在客戶端的套接字事件回調將觸發任何發射從Node.js的消息這就是爲什麼你看到重複的日誌消息。發送套接字消息中的附加數據,或附加唯一事件。