我有一個node.js項目,它有一個async::queue,由App::add()
填充。異步處理節點中的HTTP請求
這是我用它來創建服務器的代碼:
app = new App config
server = http.createServer (req, res) ->
app.add req, res, (err) ->
res.headers = 'Content-Type': 'application/json'
res.end JSON.stringify error: err
.listen config.port
App::add()
從req
採取paramters,並增加了一個任務到隊列,回調。 該隊列處理的功能是結束end
。如果發生錯誤,它將發給用戶。
到目前爲止工作正常。但是,當並行執行多個請求時,只處理一個請求。
我嘗試:
- 甲
console.log
在http.createServer
-callback的端部和它被立即調用,但下一個請求僅結束後先處理。 - 一個
console.log
在App::add()
開始,同上
如何處理的併發請求?
在此先感謝。
編輯:
要清除一些東西,這就是我想要的:
- 許多許多客戶要求的服務來下載一個ZIP
- 他們在隊列中排隊,
n
正在處理中 - 每個人都可以在他們的郵編完成後立即收到他們的郵編
編輯2:
我試圖用cluster module,但是這沒有太大的幫助,因爲我必須結束res
反正。
編輯3:
我試圖不關閉返回一個流,但沒有成功,無論是。 我有點絕望,也許我只是把人轉發到另一臺服務器,他們可以下載他們的文件。
你可以使用WebSockets。在初始請求之後加載頁面,然後在隊列的每個回調中將數據發送到頁面。只要確保你沒有阻塞隊列的事件循環,並使用'process.nextTick()'。 –
你如何返回數據?如何以什麼格式。 –
作爲應用程序/ JSON,可能是zip文件或錯誤。 – user3797089