This package has been deprecated

Author message:

Replaced by @doodad-js/cluster.

doodad-js-cluster

3.0.0-alpha.0 • Public • Published

Cluster manager (alpha).

NPM Version

<<<< PLEASE UPGRADE TO THE LATEST VERSION AS OFTEN AS POSSIBLE >>>>

Installation

$ npm install doodad-js-cluster

Features

  • IPC master <==> worker.
  • Console to master.
  • Ping workers.

Example (IPC) :

master.js

    module.exports = {
        run: function run(root) {
            const nodeJsCluster = require('cluster');
        
            const doodad = root.Doodad,
                server = doodad.Server,
                ipc = server.Ipc,
                cluster = doodad.NodeJs.Cluster;
 
            const MyService = doodad.Object.$extend(
                    ipc.MixIns.Service,
            {
                $TYPE_NAME: 'MyService',
    
                hello: ipc.CALLABLE(function hello(request) {
                    request.end("Hello world !");
                }),
            });
 
            const messenger = new cluster.ClusterMessenger(MyService);
            messenger.connect();
        
            nodeJsCluster.fork();
            nodeJsCluster.fork();
        },
    };

worker.js

    module.exports = {
        run: function run(root) {
            const nodeJsCluster = require('cluster');
            
            const doodad = root.Doodad,
                cluster = doodad.NodeJs.Cluster;
 
            const messenger = new cluster.ClusterMessenger();
            messenger.connect();
 
            function proceed() {
                setTimeout(function() {
                    messenger.callMethod('hello', [], {callback: function(err, result) {
                        console.log('<W:' + String(nodeJsCluster.worker.id) + '' + result);
                        proceed();
                    }});
                }, 500);
            };
            
            proceed();
        },
    };

index.js

    const nodeJsCluster = require('cluster');
 
    const modules = {};
    require('doodad-js-io').add(modules);
    require('doodad-js-server').add(modules);
    require('doodad-js-ipc').add(modules);
    require('doodad-js-cluster').add(modules);
    
    require('doodad-js').createRoot(modules)
        .then(root => {
            if (nodeJsCluster.isMaster) {
                require('./master.js').run(root);
            } else {
                require('./worker.js').run(root);
            };
        })
        .catch(err => {
            console.error(err);
        });

Example (Console) :

master.js

    module.exports = {
        run: function run(root) {
            const nodeJsCluster = require('cluster');
            
            const cluster = root.Doodad.NodeJs.Cluster;
 
            const messenger = new cluster.ClusterMessenger();
            messenger.connect();
            
            nodeJsCluster.fork();
            nodeJsCluster.fork();
        },
    };

worker.js

    module.exports = {
        run: function run(root) {
            const nodeJsCluster = require('cluster');
            
            const doodad = root.Doodad,
                cluster = doodad.NodeJs.Cluster,
                ioInterfaces = doodad.IO.Interfaces;
 
            const messenger = new cluster.ClusterMessenger();
            messenger.connect();
 
            const con = messenger.getInterface(ioInterfaces.IConsole);
 
            function proceed() {
                setTimeout(function() {
                    con.log('<W:' + nodeJsCluster.worker.id + '> Hello world !');
                    
                    proceed();
                }, 500);
            };
            
            proceed();
        },
    };

index.js

    const nodeJsCluster = require('cluster');
 
    const modules = {};
    require('doodad-js-io').add(modules);
    require('doodad-js-server').add(modules);
    require('doodad-js-ipc').add(modules);
    require('doodad-js-cluster').add(modules);
    
    require('doodad-js').createRoot(modules)
        .then(root => {
            if (nodeJsCluster.isMaster) {
                require('./master.js').run(root);
            } else {
                require('./worker.js').run(root);
            };
        })
        .catch(err => {
            console.error(err);
        });

Other available packages

  • doodad-js: Object-oriented programming framework (release)
  • doodad-js-cluster: Cluster manager (alpha)
  • doodad-js-dates: Dates formatting (beta)
  • doodad-js-http: Http server (alpha)
  • doodad-js-http_jsonrpc: JSON-RPC over http server (alpha)
  • doodad-js-io: I/O module (alpha)
  • doodad-js-ipc: IPC/RPC server (alpha)
  • doodad-js-json: JSON parser (alpha)
  • doodad-js-loader: Scripts loader (beta)
  • doodad-js-locale: Locales (beta)
  • doodad-js-make: Make tools for doodad (alpha)
  • doodad-js-mime: Mime types (beta)
  • doodad-js-minifiers: Javascript minifier used by doodad (alpha)
  • doodad-js-safeeval: SafeEval (beta)
  • doodad-js-server: Servers base module (alpha)
  • doodad-js-templates: HTML page templates (alpha)
  • doodad-js-terminal: Terminal (alpha)
  • doodad-js-test: Test application
  • doodad-js-unicode: Unicode Tools (beta)
  • doodad-js-widgets: Widgets base module (alpha)
  • doodad-js-xml: XML Parser (beta)

License

Apache-2.0

Readme

Keywords

Package Sidebar

Install

npm i doodad-js-cluster

Weekly Downloads

6

Version

3.0.0-alpha.0

License

Apache-2.0

Last publish

Collaborators

  • doodadjs