Wrapper around cocaine-framework-nodejs for simplifying connecting to cocaine services created with cocanode-service
npm install cocanode
var Cocanode = require('cocanode-client');
Options:
- hostname
String
Hostname of cocaine. Defaultlocalhost
- port
Number
Port of locator on cocaine host. Default10053
- service
String
Required. Name of service to connect to. - type
String
Type of service to connect to. Defaultapp
- client
Object
Optional Instance of require('cocaine').Client Use it if you do not want to create connection for every service.
- method
String
Name of service method to invoke - message
Mixed
Message for method - done
Function
Callback- err
Error
Error - response
Object
response from service
- err
- method
String
Name of service method to invoke - message
Mixed
Message for method
Returns response from service as Readable stream
var water = service.responseStream('water', '200 gallons please');
water.pipe(aquarium);
Closes connection to service in 30 sec because of cocaine internals.
var Cocanode = require('cocanode-client');
var iss = new Cocanode({
hostname: 'localhost',
service: 'iss'
});
iss.invoke('http', 'some message', function (err, response) {
console.log(response);
});
// Or you can stream response
var stream = iss.responseStream('http', 'give me a stream please');
stream.pipe(process.stdout);
stream.on('end', function () {
iss.close();
});
Same but using cocaine
module:
var Client = require('cocaine').Client;
var cli = new Client(['localhost', 10053]);
var mp = require('msgpack');
var app = cli.Service('iss', 'app');
cli.on('error', function(err){
console.log('client error', err);
});
app.on('error', function(err){
console.log('app error', err);
});
app.connect();
app.on('connect', function(){
var s = app.enqueue(
'http',
mp.pack(['GET','/','HTTP/1.1',[['some-header','value']],'']));
var header;
var body = [];
s.on('data', function(chunk){
var data = mp.unpack(chunk);
if(header === undefined){
header = data;
} else {
body.push(data);
}
});
s.on('end', function(){
app.close();
cli.close();
});
s.on('error', function(err){
console.log('reply error', err);
});
});
Use env DEBUG=cocanode-client
for verbose mode
All debug variables:
- cocanode-client
- cocanode-client:responseStream
- cocanode-client:message