/zmq-service-suite-client-js

ZMQ Service Oriented Architecture Suite - Client package for Nodejs

Primary LanguageJavaScriptBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Build Status Code Climate Coverage Issue Count Dependency Status Grunt

ZMQ Service Oriented Suite - Node-js Client

NPM version

This project is a node-js client implementation for ZMQ Service Suite.

0MQ Install

You need to have 0MQ installed.

If you use MacOS just do

$ brew install zeromq

Installation

npm install zmq-service-suite-client --save

ZSS Client Usage

var ZSSClient = require('zmq-service-suite-client');

var config = {
  // broker frontend address
  broker: 'tcp://127.0.0.1:7777',
  // service unique identifier
  sid: 'service-identifier',
  // client identity (optional), defaults to 'client'
  identity: "clientX",
  // client timeout in ms (optional), defaults to 1s
  timeout: 1000
};

var client = new ZSSClient(config);

var verb = "service/action";
var payload = "something";

// call return a promise
client.call(verb, payload)
  .then(function(response){
    console.log("received payload =>", response.payload);
    console.log("received headers =>", response.headers);
  });

// fails the promise when service status is not 200
client.call('foo')
  .fail(function(error){
    console.log("fail with code: %s and user message: %s and dev message %s",
      error.code, error.userMessage, error.developerMessage);
  });

Options are optional and can be used to:

Timeout request

// it fails the promise
client.call(verb, payload, { timeout: 1000 });
  • pass request headers
client.call(verb, payload, { headers: { something: "data" } });

NOTES

The client library have a peer dependency to logger-facade-nodejs, the module used for logging.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Bump versioning

We use grunt bump package to control package versioning.

Bump Patch version

$ grunt bump

Bump Minor version

$ grunt bump:minor

Bump Major version

$ grunt bump:major

Running Specs

$ npm test

Coverage Report

We aim for 100% coverage and we hope it keeps that way! :) We use pre-commit and pre-push hooks and CI to accomplish this, so don't mess with our build! :P

Check the report after running npm test.

$ open ./coverage/lcov-report/index.html