dot-ws

0.4.0 • Public • Published

dot-ws

dot-ws is a minimalist toolkit for building fast, scalable and fault tolerant microservices.

Install

npm i --save dot-ws

You can also clone this repository and make use of it yourself.

git clone https://github.com/Dvs-Bilisim/dot-ws.git
cd dot-ws
npm i
npm test

Configuration

  • host : binds server instance to this value. it's 0.0.0.0 by default.
  • pino : options for pino logger. it's { "level": "error" } by default.
  • port : start point for port assignment. it's 8000 by default.
  • timeout : request timeout. socket communication has auto recovery feature but in some cases you might want to have a timeout option.

Error Types

To have a better understanding on error types, there are a few more things to explain. A service is the name of your Service class in camel-case form and each static function in that class is called method. On client-side, you need to concatenate service name and method with delimiter as path. Default delimiter is a single dot(.). You can configure that by delimeter parameter.

  • INVALID_METHOD : Requested method doesn't exist in your service class
  • INVALID_PATH : Path parameter is not a valid string
  • INVALID_RESPONSE : Service sent an invalid response back
  • INVALID_SERVICE : Requested service doesn't exist
  • LOCKED : Clean shutdown on progress
  • MISSING_METHOD : Method is not a valid string
  • REQUEST_TIMEOUT : Request sent via socket but no response in allowed amount of time
  • SERVICE_TIMEOUT : No service found to send the request in allowed amount of time

Example Server

const Clerq = require('clerq');
const Server = require('dot-ws').Server;
const IORedis = require('ioredis');
 
class SampleService {
    static test(request, reply) {
        reply(request);
    }
 
    static async test2(request) {
        if (!request) throw new Error('invalid request');
        return request;
    }
}
 
const registry = new Clerq(new IORedis(), { expire: 5, pino: { level: 'error' } });
const server = new Server(registry);
server.addService(SampleService);
server.start();

Example Client

const Clerq = require('clerq');
const Client = require('dot-ws').Client;
const IORedis = require('ioredis');
 
const registry = new Clerq(new IORedis(), { expire: 5, pino: { level: 'error' } });
const client = new Client(registry);
client.send('sampleService.test', request, response => {
    console.log(response);
});

Package Sidebar

Install

npm i dot-ws

Weekly Downloads

1

Version

0.4.0

License

MIT

Unpacked Size

16.6 kB

Total Files

9

Last publish

Collaborators

  • umuplus