You're Invited: Meet the Socket team at BSidesSF and RSAC - April 27 - May 1.RSVP
Socket
Sign inDemoInstall
Socket

window-worker

Package Overview
Dependencies
Maintainers
1
Versions
102
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

window-worker

Web Worker for node using async http fetch

0.0.24
Source
npm
Version published
Maintainers
1
Created
Source

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

Example

Creating a Worker from a file

The worker script:

onmessage = function (ev) {
	postMessage(ev.data);
};

The core script:

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

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

//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

//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

  • 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
  • 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);
  • 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

Keywords

web

FAQs

Package last updated on 12 Feb 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts