Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Tiny WebWorker for the Server

License

NotificationsYou must be signed in to change notification settings

avoidwork/tiny-worker

Repository files navigation

Tiny WebWorker for Server

require() is available for flexible inline Worker scripts. Optional parametersargs Array &options Object; seechild_process.fork() documentation.

build status

Example

Creating a Worker from a file

The worker script:

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

The core script:

varWorker=require("tiny-worker");varworker=newWorker("repeat.js");worker.onmessage=function(ev){console.log(ev.data);worker.terminate();};worker.postMessage("Hello World!");

Enable ES6 import/export within Worker file

The worker helper script (helper.js):

exportconstdataFormatter=(data)=>{return`${data} World!`;};

The worker script (repeat.js):

import{dataFormatter}from"./helper";onmessage=function(ev){constdata=dataFormatter(ev.data);postMessage(data);};

The core script:

varWorker=require("tiny-worker");varworker=newWorker("repeat.js",[],{esm:true});worker.onmessage=function(ev){console.log(ev.data);worker.terminate();};worker.postMessage("Hello");

Creating a Worker from a Function

varWorker=require("tiny-worker");varworker=newWorker(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 thesetRange(min, max) method.To disable any automatic port redirection setoptions.noDebugRedirection = true.

automatic redirection

//parent is started with '--debug=1234'varWorker=require("tiny-worker");Worker.setRange(2,20);varworker=newWorker(function(){postMessage(process.debugPort);});worker.onmessage=function(ev){console.log(ev.data);//prints any number between 1236 and 1254worker.terminate();}

manual redirection

//parent is started with '--debug=1234'varWorker=require("tiny-worker");varworker=newWorker(function(){postMessage(process.debugPort);},[],{noDebugRedirection:true,execArgv:["--debug=1235"]});worker.onmessage=function(ev){console.log(ev.data);//prints 1235worker.terminate();}

Properties

onmessage

Message handler, accepts anEvent

onerror

Error handler, accepts anEvent

API

addEventListener(event, fn)

Adds an event listener

postMessage()

Broadcasts a message to theWorker

terminate()

Terminates theWorker

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 aSIGTERM orSIGINT is not reaching the child process
  1. How do I insure all process are terminated?
  • In your core script register a listener forSIGTERM orSIGINT viaprocess.on() which terminates (all) worker process(es) and then gracefully shutdowns viaprocess.exit(0);
  1. WhySIGTERM orSIGINT?
  • Unix/BSD will work withSIGTERM, but if you also need to support Windows useSIGINT

License

Copyright (c) 2019 Jason MulliganLicensed under the BSD-3 license

About

Tiny WebWorker for the Server

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Contributors7


[8]ページ先頭

©2009-2025 Movatter.jp