Skip to content

norjs/event-service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

NorJS Event Service

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •