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.
Example
Creating a Worker from a file
The worker script:
{ ;};
The core script:
var Worker = ;var worker = "repeat.js"; worker { console; worker;}; worker;
Enable ES6 import/export within Worker file
The worker helper script (helper.js):
const dataFormatter = { return ` World!`;};
The worker script (repeat.js):
; { const data = ; ;};
The core script:
var Worker = ;var worker = "repeat.js" esm: true; worker { console; worker;}; worker;
Creating a Worker from a Function
var Worker = ;var worker = { self { ; };}; worker { console; worker;}; worker;
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
//parent is started with '--debug=1234'var Worker = ;Worker; var worker = { ; }; worker { console; //prints any number between 1236 and 1254 worker;}
manual redirection
//parent is started with '--debug=1234'var Worker = ; var worker = { ; } noDebugRedirection: true execArgv: "--debug=1235"; worker { console; //prints 1235 worker;}
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
- I have an orphaned child process that lives on past the parent process' lifespan
- Most likely a
SIGTERM
orSIGINT
is not reaching the child process
- How do I insure all process are terminated?
- In your core script register a listener for
SIGTERM
orSIGINT
viaprocess.on()
which terminates (all) worker process(es) and then gracefully shutdowns viaprocess.exit(0);
- Why
SIGTERM
orSIGINT
?
- Unix/BSD will work with
SIGTERM
, but if you also need to support Windows useSIGINT
License
Copyright (c) 2019 Jason Mulligan Licensed under the BSD-3 license