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 loopback-component-changestreamer
Important! Disable compression middleware in middleware.json files like this:
Add the following configuration to component-config.json:
..."loopback-component-changestreamer":"mountPath": "/api/updates""reconnectTimeout": 3000"responseTimeout": 120000"models":"Foo""Bar""Baz""headers":"x-auth-request-user"...
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.
- headers - headers and values to embed in the stream metadata.
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 = '//<host>:<port>/api/updates';src;