node-webworkers
is an implementation of the Web Workers
API for
node.js.
See the design document here.
var sys = require('sys');
var Worker = require('webworker');
var w = new Worker('foo.js');
w.onmessage = function(e) {
sys.debug('Received mesage: ' + sys.inspect(e));
w.terminate();
};
w.postMessage({ foo : 'bar' });
onmessage = function(e) {
postMessage({ test : 'this is a test' });
};
onclose = function() {
sys.debug('Worker shuttting down.');
};
Supported API methods are
postMessage(e)
in both workers and the parent; messages are in the
parent if this is invoked before the child is fully initializedonmessage(e)
in both workers and the parentonerror(e)
in both workers and the parentterminate()
in the parentIn addition, some nonstandard APIs are provided
onclose()
in the worker (allows for graceful shutdown)postMessage()
method takes an additional optional file descriptor parameter, which
will be sent with the message. This descriptor will be passed to
onmessage
handlers as an optional fd
field. Handlers receiving
messages posted without file descriptors will not see an fd
field. Both
the parent and child can send file descriptors using this mechanism.Worker.onexit(code, signal)
in the master, which is invoked on the
master Worker
object when the worker process exits.Worker
constructor takes an additional optional object argument,
opts
, which is used as a dictionary of options with the following keys
args
: A string or array of strings to pass to the executable before the filename to invoke. This can be used to request that the worker start up in debug mode (e.g. { 'args' : '--debug-brk' }
). By default this is empty.path
: A string naming the executable to invoke for workers. By default this is the value of process.execPath
(e.g. node
or similar).This package can be installed via npm as follows
% npm install webworker
Note that this requires
node-websocket-client v0.9.3
or later. This dependency will be handled automatically by npm
, but must be
dealt with manually if installing using another procedure.
This package contains a static snapshot of Micheil Smith's excellent node-websocket-server with some fixes applied to handle UNIX sockets.