2013-07-16 3 views
7

Ich habe einen http Server und einen gegabelten Kindprozess. Ich möchte, dass der Elternteil Anfragen erhält und an den gegabelten Prozess unter Verwendung von worker.send übergibt. Der Worker sollte in der Lage sein, die Antwort mit demselben Antwortobjekt an den Anforderer zu verarbeiten und zu senden.Node.js übergeben Handle des Antwortobjekts Handle zum Kind Prozess

ich im zweiten Parameter von worker.send das Antwortobjekt versucht zu senden, aber es gibt den Fehler 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); 

ich in der child_process.js Datei überprüft, und es sagt, wenn es nicht auf einige nicht gehört die Typen, wird es den Fehler werfen.

Ich möchte wissen, ob es andere Optionen gibt, mit denen ich das Antwortobjekt an das gegabelte Kind senden kann.

EDIT:

Okay, hier ist was ich gefunden habe, Ich habe gerade die folgende

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

Und der gegabelten Prozess ist in der Lage write auf dem Handler aufrufen wird es.

Ist es richtig? Kann ich es so benutzen? oder wird es unter einigen blah blah-Bedingungen irgendwelche Implikationen geben?

+1

Hi @ Салман. Haben Sie eine Lösung für dieses Problem gefunden? Ich stehe mit demselben Problem fest. – Sid

+0

Nein, aber ich denke, dass ich es mit diesem Ansatz auf andere Weise gelöst habe. Wenn Sie einen bestimmten Anwendungsfall haben, den Sie teilen können, könnten Sie eine Lösung finden. –

+0

Ich habe dasselbe Problem –

Antwort

0

Der worker.send nimmt nur Anforderungen von einer net.createServer-Funktion. Versuchen Sie besser mit 'net' Paket anstelle von http. Dies löste mein Problem