npm

npm’s 2019 JavaScript ecosystem survey analysis is now available!Get your copy here »

@6river/loopback-component-changestreamer

0.0.1 • Public • Published

loopback-component-changestreamer

The component observes a number specified models and notifies about the changes by SSE.

The main difference with Loopback /change-stream channels is that this implementation creates only two observers (after save and after delete) per model and then streams the changes to keep-alive registered connections. In contrast Loopback creates two same observers for each connection.

Install and Setup

Install the company: npm install --save @6river/loopback-component-changestreamer

Important! Disable compression middleware in middleware.json files like this:

{
  ...
  "compression": {
    "enabled":false
    },
    ...
}

Add the following configuration to component-config.json:

{
  ...
  "loopback-component-changestreamer": {
    "mountPath": "/api/updates",
    "reconnectTimeout": 3000,
    "responseTimeout": 120000,
    "models": [
      "Foo",
      "Bar",
      "Baz"        
    ]
  },
  ...
}

See e2e/ directory as an example for how to make project configuration.

The configuration parameters:

  • mountPath - base URL to subscribe for updates;
  • reconnectTimeout - instruct Browser to reconnect after this timeout if connection is lost;
  • responseTimeout - the response socket will be closed after this timeout;
  • models - array of model names to observe.

The component configuration above adds 3 middleware rules:

  • GET "/api/updates" to connect some SourceEvent listener;
  • GET "/api/updates/stat" to see a statistics about number of current connections;
  • DELETE "/api/updates" to close all registered connections.

The following snippet can be used on client side to connect:

var src = new EventSource('//<host>:<port>/api/updates');
src.addEventListener('message', function(message) {
  ...    
});

install

npm i @6river/loopback-component-changestreamer

Downloadsweekly downloads

1

version

0.0.1

license

ISC

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
Report a vulnerability