@steelbreeze/broker
v1.0.0-beta.14
Published
Lightweight publish and subscribe using Server-Sent Events for node and express
Downloads
4
Maintainers
Readme
broker
Lightweight publish and subscribe using Server-Sent Events for node and express
If you like broker, please star it...
Install
npm i @steelbreeze/broker
Usage
Server
To create a message broker server within an express application:
const express = require('express');
const broker = require('@steelbreeze/broker');
// create the express application
var app = express();
// create a message broker that provides the last message on subscription
var events = broker.server({lastMessage: true});
// bind the message broker to the /events base URL
app.use('/events', events);
// start the express application
app.listen(1024, 'localhost');
You can create multiple message broker servers and bind them to different base URLs in the same express application.
Subscriber (node)
To create a subscription:
const broker = require('@steelbreeze/broker');
// create a client to the message broker
var client = broker.client({host:'localhost', port: 1024, path: '/events'});
// subscribe to the devices topic on the /events broker
client.subscribe('devices', (message) => {
console.log(`All devices: (${message.id}) ${message.data}`);
});
A single client can subscribe to multiple topics.
Publisher (node)
To create a subscription:
const broker = require('@steelbreeze/broker');
// create a client to the message broker
var client = broker.client({host:'localhost', port: 1024, path: '/events'});
// publish a message on the devices topic of the /events broker every second
var timer = setInterval( () => {
client.publish('devices', `Hello at ${new Date()}`, onError);
}, 1000);
function onError() {
clearInterval(timer);
}
Web clients
In addition to using the provided client, a browser's EventSource
may be used to subscribe and an HTTP POST can be used to publish.
Note: for some browsers this may require an EventSource polyfill.
License
MIT License
Copyright (c) 2018 David Mesquita-Morris