npm

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

@steelbreeze/broker

1.0.0-beta.14 • Public • Published

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

install

npm i @steelbreeze/broker

Downloadsweekly downloads

18

version

1.0.0-beta.14

license

MIT

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
Report a vulnerability