Skip to content
Snippets Groups Projects
README.md 1.69 KiB
Newer Older
  • Learn to ignore specific revisions
  • Jason Mulligan's avatar
    Jason Mulligan committed
    # 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
    
    Jason Mulligan's avatar
    Jason Mulligan committed
    #### Creating a Worker from a file
    The worker script:
    ```javascript
    
    onmessage = function (ev) {
    
    Jason Mulligan's avatar
    Jason Mulligan committed
    	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!");
    
    Jason Mulligan's avatar
    Jason Mulligan committed
    ```
    
    Jason Mulligan's avatar
    Jason Mulligan committed
    
    #### Creating a Worker from a Function
    
    ```javascript
    
    Jason Mulligan's avatar
    Jason Mulligan committed
    var Worker = require("tiny-worker");
    var worker = new Worker(function () {
    	self.onmessage = function (ev) {
    		postMessage(ev.data);
    	};
    
    });
    
    worker.onmessage = function (ev) {
    
    Jason Mulligan's avatar
    Jason Mulligan committed
    	console.log(ev.data);
    	worker.terminate();
    
    Jason Mulligan's avatar
    Jason Mulligan committed
    worker.postMessage("Hello World!");
    
    ```
    
    ## Properties
    #### onmessage
    Message handler, accepts an `Event`
    
    #### onerror
    Error handler, accepts an `Event`
    
    ## API
    
    Jason Mulligan's avatar
    Jason Mulligan committed
    #### addEventListener(event, fn)
    Adds an event listener
    
    
    #### postMessage()
    Broadcasts a message to the `Worker`
    
    
    Jason Mulligan's avatar
    Jason Mulligan committed
    #### terminate()
    Terminates the `Worker`
    
    
    Jason Mulligan's avatar
    Jason Mulligan committed
    ## FAQ
    1. I have an orphaned child process that lives on past the parent process' lifespan
      * Most likely a `SIGTERM` is not reaching the child process
    2. How do insure all process are terminated?
      * In your core script register a listener for `SIGTERM` via `process.on()` which terminates (all) worker process(es) and then gracefully shutdowns via `process.exit(0);`
    
    
    ## License
    Copyright (c) 2015 Jason Mulligan
    Licensed under the BSD-3 license