skyblue
1/9/2012 - 4:49 AM

nodejs worker

nodejs worker

var net = require('net');
var path = require('path');
var sys = require('sys');
var Worker = require('webworker/webworker').Worker;

var NUM_WORKERS = 5;

var workers = [];
var numReqs = 0;

for (var i = 0; i < NUM_WORKERS; i++) {
workers[i] = new Worker(path.join(__dirname, 'worker.js'));
}

net.createServer(function(s) {
s.pause();

var hv = 0;
s.remoteAddress.split('.').forEach(function(v) {
hv += parseInt(v);
});

var wid = hv % NUM_WORKERS;

sys.debug('Request from ' + s.remoteAddress + ' going to worker ' + wid);

workers[wid].postMessage(++numReqs, s.fd);
}).listen(80);