Quindi sto lavorando su un progetto in Node.js e voglio aprire alcuni thread aggiuntivi per gestire il carico di elaborazione in modo più efficiente. Ma sto usando classi con definizioni di funzioni con esse e quando provo a inviare quegli oggetti al thread worker, le funzioni definite nell'oggetto scompaiono e mi rimangono solo gli altri campi nell'oggetto. C'è un modo per inviare al lavoratore un oggetto e preservare le funzioni in modo che possano essere chiamate all'interno del lavoratore?Node.js che invia un oggetto con definizioni di funzione al thread di lavoro
var cluster = require('cluster');
if(cluster.isMaster){
Monster = function(species){
this.attack = function(){
console.log('CHOMP');
};
this.name = species;
};
var vamp = new Monster('vampire'),
worker = cluster.fork();
worker.send({'monster' : vamp});
}
else{
process.on('message', function(msg) {
console.log(msg.monster); //this logs "{ name: 'vampire' }"
msg.monster.attack(); //TypeError: Object #<Object> has no method 'attack'
});
}
wow che limita davvero la funzionalità del modulo cluster. Sai se ci sono piani per aggiungerlo a Node.js? –
Questa funzionalità è contraria all'architettura node.js. Il ciclo di eventi Node.js funziona in un singolo thread. Il modulo cluster avvia solo nuovi processi. Hanno tutti una memoria indipendente. L'implementazione di architetture multi-threaded deve supportare thread con memoria condivisa e meccanismi correlati come 'mutexes 'e' semaphores'. Questo non è il modo node.js. –