aboutsummaryrefslogtreecommitdiff
path: root/node_modules/tiny-worker/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/tiny-worker/README.md')
-rw-r--r--node_modules/tiny-worker/README.md115
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.
+
+[![build status](https://secure.travis-ci.org/avoidwork/tiny-worker.svg)](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