UNPKG

osnova-cluster-launcher

Version:

Deprecated! See [cluster-launcher](https://www.npmjs.com/package/cluster-launcher).

89 lines (70 loc) 2.42 kB
# Cluster multiprocess launcher ## bI? Simple configurable launcher for Node.js based on cluster. Includes built-in sticky listeners. ## Install `npm i osnova-cluster-launcher --save` ## Usage ```javascript const { launch, stickyListenWorker, stickyListenMaster } = require('osnova-cluster-launcher'); const workerFunc = (listen) => { // Use express for example. const app = require('express')(); const http = require('http').Server(app); app.get('*', (req, res) => { res.send(`Hello from worker pid:${process.pid}`); }); listen(http); }; const masterFunc = (listen) => { console.log('We are doing some crazy master stuff here!'); listen(); }; launch({ worker: { main: workerFunc, listen: stickyListenWorker }, master: { main: masterFunc, listen: stickyListenMaster }, config: { threads: 4, host: { ip: 'localhost', port: 5000 } } }); ``` ## API ### .launch(opts) @param opts { object } options object Expected that master and worker will call `listen` by themselves, because they can contain some async init functions. ##### Options object - **config** { object } - **threads** { number } count of worker processes to spawn. `default: 1` - **host** { object } web server configuration - **ip** { string } `default: 'localhost'` - **port** { number } `default: 8080` - **worker** - **main** { function } entry point of the every worker, takes `listen` as a parameter - **listen** { function } `default: stickyListenWorker` - **master** - **main** { function } entry point of the master - **listen** { function } `default: stickyListenMaster` `worker`/`master`'s `main` will be called with specified to them listen function as a parameter. ##### Worker's listen Expects `http` server object as a parameter. ##### Master's listen Will be wrapped in a function that takes no arguments. Because of it in the master's `main` you should just do `listen()`. But inside it will be called by `launch` with options object as a parameter: - **ip** { string } - **port** { number } - **workers** { array } ### .stickyListenWorker, .stickyListenMaster Default built-in listen function for worker, that provide sticky connection for the client to specific worker based on the client's ip address. Usefull for Socket.IO.