kferran / instantly

EventSource convenience wrapper

Home Page:https://www.npmjs.com/package/instantly

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Instantly

instantly

Code Climate Test Coverage Travis Known Vulnerabilities

What is this?

EventSource wrapper.

The EventSource API is easy as it is. Reason I created this was to hide all logic used when I implement EventSource.

IMPORTANT. This is NOT EventSource Polyfill!

Installation

It's available on npm.

npm install --save instantly

How can I use this library?

It's an UMD module. If you don't know what UMD is: https://github.com/umdjs/umd

The UMD build is also available on unpkg:

<script src="//unpkg.com/instantly/dist/instantly.umd.js"></script>

Usage

// Example
var es = new Instantly('http://your-sse-endpoint.codes/channel', {
    origin: 'http://your-sse-endpoint.codes', // Optional. Just an extra level of precaution to verify your event origin matches your app's origin.
    retries: 2, // Optional. Default: 5 retries if connection to your endpoint fails.
    timeout: 1000, // Optional. Default: 15 seconds (15000). This is how often we should retry.
    closeConnNotFocus: true, // Optional. Default: false. This will close the SSE connection if the tab/window is not in focus. Will reconnect when in focus.
    error: function(err) {
        console.log(err);
    }, // Optional. Extending the internal error handler.
    open: function(event) {
        console.log(event);
    }, // Optional. Extend when you open a connection to SSE.
    close: function() {
        console.log('closed');
    }, // Optional. Extend when a connection to SSE is closed. (Usually when an error occur)
    injectEventSourceNode: require('eventsource'), // Optional. If the module is being used in Node you're able to inject [eventsource-node](https://www.npmjs.com/package/eventsource)
});

// If you want to use default options
// var es = new Instantly('http://your-sse-endpoint.codes/channel');

// Listen to messages without any event set
es.on('message', function newMessage(msg) {
    console.log(msg.data);
});

// Listen to messages with an event set
es.on('eventName', function newMessage(msg) {
    console.log(msg.data);
});

// Start to listen for events send by SSE
es.listen();

If you need to close the connection client side

// Close
es.close();

// Need to open the connection again?
es.listen();

Built in features

  • If you send an event with event id 'CLOSE', it'll close your SSE connection with no retries.

Example

Navigate to example folder

npm install
npm start

Open your browser in http://localhost:1337

High performance SSE server

SSEHub (Server-Sent Events streaming server)

Contribution

Contributions are appreciated.

License

MIT-licensed. See LICENSE.

About

EventSource convenience wrapper

https://www.npmjs.com/package/instantly

License:MIT License


Languages

Language:JavaScript 94.5%Language:HTML 5.5%