sse-broadcast
Server-Sent Events through a Publish/Subscribe API for Node.js. This package is intended to simplify the use of SSE by providing a convenient way to organize ongoing streams into classes (or channels). You can bind an open response stream to one or more channels - specified by a string identifier - and in other parts of the codebase you can address messages (or events) by that channel. Let's take a look at the following example!
Usage
With Express:
const app = sse = app app app
If you're interested about the usage with Koa or a vanilla Node.js server, see the examples folder.
Send event directly to a specified client (instead of a channel):
app
For more convenience, there are helpers to extend http.ServerResponse.prototype
and to easily create middleware for Connect/Express:
const app = sse = sse app// orapp
Compression
This package supports response
compression.
If you want to compress outgoing event streams then you
have to provide the request
object for subscriptions.
const app = sse = compression: true // !!! app
The compression
option can be set to true
or an object containing settings
for the compression module.
Using multiple nodes
SSE is a long-polling solution, consequently if you want to broadcast events to every client subscribed to a given channel then you’ll need some way of passing messages between processes or computers.
You can implement your own mechanism to do this or simply use sse-broadcast-redis to distribute events on top of Redis:
const os = cluster = if clusterisMaster for var i = oslength; i--; clusterelse const app = sse = sse host: 'localhost' port: 6379 app app app
Note: options are passed to redis directly.
API
The overall API documentation is available here.
Compatibility
sse-broadcast
is compatible with Node 0.8
and above but in versions lower than 1
you'll need to use a process.nextTick()
polyfill.
Installation
With npm:
npm install sse-broadcast