2013-07-16 58 views
7

我有一個http服務器和一個分叉的子進程。我希望父母接收請求並使用worker.send傳遞給分叉進程。並且工作人員應該能夠使用相同的響應對象處理並將響應發回給請求者。Node.js將響應對象句柄的句柄傳遞給子進程

我試圖發送響應對象的worker.send第二個參數,但它給出了錯誤This handle type can't be sent

var child_process = require('child_process'); 

var worker = child_process.fork(filename); 

http.createServer(function (req, res) { 
    worker.send({ 'event': 'start' }, res); // send response object 
}).listen(4000); 

我在child_process.js文件檢查,它說,如果它不屬於一些類型,它會拋出錯誤。

我想知道是否有任何其他選項可以將響應對象發送給分叉子。

編輯:

好了,這裏是我的發現,我只是改變了以下

// Instead of 
// worker.send({ 'event': 'start' }, res); 
worker.send({ 'event': 'start' }, res.socket); 

兩岔過程能夠調用write就可以得到處理。

它是正確的嗎?我可以用這種方式嗎?或者在某些等待條件下會有什麼影響?

+1

嗨@Салман。你有解決這個問題的方法嗎?我陷入了同樣的問題。 – Sid

+0

沒有,但我認爲我設法用其他方式解決了這個問題。如果你有特定的用例可以分享,你可以找到一個解決方案。 –

+0

我有同樣的問題 –

回答

0

worker.send只接收來自net.createServer函數的請求。嘗試使用'net'包而不是http。這解決了我的問題