bsbd

    0.4.0 • Public • Published

    busybody

    Simple IPC library

    This requires a bridge to connect all nodes. The bridge can reside in any process.

    Client:Node Server:Bridge

    IPC Transports: Unix Socket TCP

    Server should be able to connect on a stateless manner, we have a Unix socket path, and if the file is there, we move on. Else we make new connection.

    http://xathrya.web.id/blog/2013/10/21/nodejs-unix-sockets/

    http://stackoverflow.com/questions/16178239/gracefully-shutdown-unix-socket-server-on-nodejs-running-under-forever

    I suggest you clean up on start. When you get EADDRINUSE, try to connect to the socket. If the socket connection succeeds, another server is running and so this instance should exit. If the connection fails then it is safe to unlink the socket file and create a new one.

    var fs = require('fs');
    var net = require('net');
    var server = net.createServer(function(c) { //'connection' listener
        console.log('server connected');
        c.on('end', function() {
            console.log('server disconnected');
        });
        c.write('hello\r\n');
        c.pipe(c);
    });
     
    server.on('error', function (e) {
        if (e.code == 'EADDRINUSE') {
            var clientSocket = new net.Socket();
            clientSocket.on('error', function(e) { // handle error trying to talk to server
                if (e.code == 'ECONNREFUSED') {  // No other server listening
                    fs.unlinkSync('/tmp/app-monitor.sock');
                    server.listen('/tmp/app-monitor.sock', function() { //'listening' listener
                        console.log('server recovered');
                    });
                }
            });
            clientSocket.connect({path: '/tmp/app-monitor.sock'}, function() {
                console.log('Server running, giving up...');
                process.exit();
            });
        }
    });
     
    server.listen('/tmp/app-monitor.sock', function() { //'listening' listener
        console.log('server bound');
    });

    https://www.npmjs.com/package/nats https://www.npmjs.com/package/discover-tcp-transport

    DEBUG=* node ./bin/cli --bridge /tmp/kiko4.sock
    DEBUG=* node example/node1.js
    DEBUG=* node example/anon.js
    DEBUG=* node example/node-shout.js
    

    Getting Started

    Install the module with: npm install busybody

    var busybody = require('busybody');
    busybody.awesome(); // "awesome"

    Documentation

    (Coming soon)

    Examples

    (Coming soon)

    Contributing

    In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.

    Release History

    (Nothing yet)

    License

    Copyright (c) 2015 goliatone
    Licensed under the MIT license.

    Install

    npm i bsbd

    DownloadsWeekly Downloads

    1

    Version

    0.4.0

    License

    none

    Unpacked Size

    88.5 kB

    Total Files

    39

    Last publish

    Collaborators

    • goliatone