zmq-soa

zmq-soa =======

zmq-soa

implement distributed zmq SOA broker , worker , requester

npm install zmq-soa

Broker is used for setting

    soa = require('zmq-soa');
    var port = 8888
    var broker = new soa.Broker('tcp://*:'+port, {});
broker.on('connect', function(client) {
    console.log('connect')
})
    
broker.on('disconnect', function(client) {
    console.log('connect')
})
    
var port = 8888
 
//worker connect 
worker = new soa.Client('localhost', port, 
    {
        service: 'serviceName'
    }
    , 
    //worker response function 
    function(datacb) {
        console.log('get test message'+data);
        return cb(data);
    }
);
//client connect 
client = new soa.Client('localhost', 8888);
worker.on('connect', function() {
    console.log('woker connected');
});

##Authenticate

//trigger after encryption handshake 
worker.on('ready', function() { 
    worker.Authenticate('123');
});
 
//auth to broker 
worker.on('authenticate', function(result) {
    if(result)
        console.log('auth success')
    else
        console.log('auth failed')
});

####broker.on('auth', function(envelope, data, cb))

broker.on('auth', function(envelopedatacb) {
    // check user information 
    if (data.auth && data.auth === 'password') {
        if (cb) {
            
            if (data.service) {
                //auth success and set client as a worker 
                return cb(true, envelope, data.service, data);
            } else {
                //auth success and set client as a worker 
                return cb(true, envelope, data);
            }
        } 
    } else {
        //auth failed 
        return cb(false, envelope);
    }
});
client = new soa.Client('localhost', port);
client.send('test2', new Buffer('message'), function(err, data) {})
worker = new soa.Client('localhost', port, 
    {
        service: 'serviceName'
    }
    , 
    //worker response function
    function(data, cb) {
        console.log('get test message'+data);
        worker.send('service2',function(data){
            return cb(data);
        })
    }
);

Broker service provide client and worker to get message from broker directly. ####broker.on('service',function(msg,client-envelop,[callback])

broker.on('service', function(msgenvelopecb) {
    console.log(msg.data.toString())
    cb(
});

####client.sendBService(data,[callback],[timeout])

client.sendBService(new Buffer("{'data':'123'}"));
client.sendBService(new Buffer("{'data':'123'}")
    ,
    //service return data 
    function(error,data){
        console.log(data.toString())
    }
    //10 second 
    ,10
);

MIT