1.0.14 • Published 5 years ago

@norjs/event-service v1.0.14

Weekly downloads
9
License
MIT
Repository
github
Last release
5 years ago

NorJS Event Service

This is a local service which passes on events to event servers and observers.

Design

It is a NodeJS service which has one or more configured top level event servers.

Local observers can connect to it over a UNIX socket file.

Event must be triggered on only one top level server, unless the server is unavailable.

Communication between the service and a top level server is implemented using either a long polling HTTP(S) connection (if the server cannot connect to the service directly) or direct two-way HTTP(S)/UNIX-Socket connection (if connection is possible both ways).

Communication between the service and observers is implemented over a UNIX socket file with HTTP long polling.

Install

npm install -g @norjs/event-service

Usage

Start a service on ./socket.sock:

NODE_LISTEN=socket.sock \
nor-event-service

Wait for an event:

if NODE_CONNECT=/path/to/socket.sock nor-event --wait=foo; then
  echo Event happened
else
  echo Timeout happened
fi

Trigger an event:

NODE_CONNECT=/path/to/socket.sock nor-event --trigger=foo --payload='{"hello":"world"}'

Start a service on ./socket.sock with configured types:

NOR_EVENT_LOAD_TYPES='./types.js' \
NOR_EVENT_PAYLOAD_TYPES='{"my-resource:created": "MyResourceDTO"}' \
NODE_LISTEN=./socket.sock \
nor-event-service

And define your types using JSDoc-style in a file named ./types.js:

const TypeUtils = require('@norjs/utils/Type');

/**
 * @typedef {Object} MyResourceDTO
 * @property {number} id - My resource id
 * @property {string} name - My resource name
 * @property {boolean} deleted - Deleted or not?
 * @property {Array.<MyResourceItemDTO>} items - My items
 */
TypeUtils.defineType(
    "MyResourceDTO", 
    {
        "id": "number",
        "name": "string",
        "deleted": "boolean",
        "items": "Array.<MyResourceItemDTO>"
    }
);

You can use this file from your own application. It also integrates to WebStorm's quick documentation, too, since it is standard JavaScript and JSDoc.

1.0.14

5 years ago

1.0.10

5 years ago

1.0.8

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago