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(data, cb) {
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(envelope, data, cb) {
// 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(msg, envelope, cb) {
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