diff options
Diffstat (limited to 'node_modules/tiny-worker/README.md')
-rw-r--r-- | node_modules/tiny-worker/README.md | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/node_modules/tiny-worker/README.md b/node_modules/tiny-worker/README.md new file mode 100644 index 000000000..b73787334 --- /dev/null +++ b/node_modules/tiny-worker/README.md @@ -0,0 +1,115 @@ +# tiny-worker +Tiny WebWorker for Server + +`require()` is available for flexible inline Worker scripts. Optional parameters `args` Array & `options` Object; see `child_process.fork()` documentation. + +[](http://travis-ci.org/avoidwork/tiny-worker) + +## Example +#### Creating a Worker from a file +The worker script: +```javascript +onmessage = function (ev) { + postMessage(ev.data); +}; +``` + +The core script: +```javascript +var Worker = require("tiny-worker"); +var worker = new Worker("repeat.js"); + +worker.onmessage = function (ev) { + console.log(ev.data); + worker.terminate(); +}; + +worker.postMessage("Hello World!"); +``` + +#### Creating a Worker from a Function +```javascript +var Worker = require("tiny-worker"); +var worker = new Worker(function () { + self.onmessage = function (ev) { + postMessage(ev.data); + }; +}); + +worker.onmessage = function (ev) { + console.log(ev.data); + worker.terminate(); +}; + +worker.postMessage("Hello World!"); +``` + +# Debugging +To be able to debug a child process, it must have a differnt debug port than the parent. +Tiny worker does this by adding a random port within a range to the parents debug port. +The default Range is `[1, 300]`, it can be changed with the `setRange(min, max)` method. +To disable any automatic port redirection set `options.noDebugRedirection = true`. + +### automatic redirection +```javascript +//parent is started with '--debug=1234' +var Worker = require("tiny-worker"); +Worker.setRange(2, 20); + +var worker = new Worker(function () { + postMessage(process.debugPort); +}); + +worker.onmessage = function (ev) { + console.log(ev.data); //prints any number between 1236 and 1254 + worker.terminate(); +} +``` + +### manual redirection +```javascript +//parent is started with '--debug=1234' +var Worker = require("tiny-worker"); + +var worker = new Worker(function () { + postMessage(process.debugPort); +}, [], {noDebugRedirection: true, execArgv: ["--debug=1235"]}); + +worker.onmessage = function (ev) { + console.log(ev.data); //prints 1235 + worker.terminate(); +} +``` + +## Properties +#### onmessage +Message handler, accepts an `Event` + +#### onerror +Error handler, accepts an `Event` + +## API +#### addEventListener(event, fn) +Adds an event listener + +#### postMessage() +Broadcasts a message to the `Worker` + +#### terminate() +Terminates the `Worker` + +#### static setRange(min, max) +Sets range for debug ports, only affects current process. +Returns true if successful. + +## FAQ +1. I have an orphaned child process that lives on past the parent process' lifespan + * Most likely a `SIGTERM` or `SIGINT` is not reaching the child process +2. How do I insure all process are terminated? + * In your core script register a listener for `SIGTERM` or `SIGINT` via `process.on()` which terminates (all) worker process(es) and then gracefully shutdowns via `process.exit(0);` +3. Why `SIGTERM` or `SIGINT`? + * Unix/BSD will work with `SIGTERM`, but if you also need to support Windows use `SIGINT` + +## License +Copyright (c) 2017 Jason Mulligan +Licensed under the BSD-3 license |