npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

sselib

v0.0.97

Published

SSE (Server Sent Events) library and middleware.

Downloads

42

Readme

sselib.js

SSE (Server Sent Events) library for node.js.

sselib is a implementation of the server-side part of the [SSE] 1 protocol written in Coffee Script for the node.js platform.

Build Status NPM version

Installation

Install with npm:

$ npm install sselib

Requirements

None, tested on node.js 0.6 >

Connect and Express Middleware

sselib can be used as a middleware for applications following the Connect convention.

Example

Javascript

    var sselib = require('sselib'),
    express = require('express');

    var app = express();
    
    app.use(sselib.middleware());
    
    app.get('/events', function(req, res) {
      res.sse({
        event: 'update',
        data: 'I am a stray cat.'
      });
        
    });

    app.listen(3000);

Coffeescript

    sselib = require 'sselib'
    express = require 'express'

    app = express()

    app.use sselib.middleware()
    
    app.get '/events', (req, res) ->
      res.sse
        event: 'update'
        data: 'I am a stray cat.'

Options

You can pass options when initializing the middleware.

    app.use(sselib.middleware({
      retry: 5*1000,
      keepAlive: 15*1000,
      compatibility: true
    });

A already initialized connection can use res.sse.set in order to set a new value for the option. Setting longer retry values and closing connections can be a effective strategy when servers are under high load.

    app.get('/events', function(req, res) {
      res.sse.set('retry', 30*1000);
    });

res.sse.get(option) respectively gets the current configuration.

retry

The time in milliseconds for client reconnects. Default is 5 seconds.
Set to false in order to disable.

keepAlive

Sends pseudo keep alive heartbeats in order to keep the connection open. The value is the amount of milliseconds between each keepAlive heartbeat. Default is 15 seconds.
Set to false in order to disable.

compatibility

"Quirks mode". Adds support for some polyfills and the way MSIE handles XDomainRequest. Default is true
Set to false in order to disable.

Use as a library to serialize data for your own transmission

Example

    var sselib = require('sselib');

    console.log(sselib.event("notice")); // "event: notice\n"
    console.log(sselib.data("Hello there!")); // "data: Hello there!\n\n"

    // or:
    
    sselib.data("Hello there!", function(err, result) {
      if (err) {
        // print the error to console
        console.log(err);
        return;
      }
      console.log(result) // "data: Hello there!\n\n"
    });

Serializers

sselib.comment(comment [, callback])

Returns a SSE-serialized comment string representing a comment (please note that comments are invisible to browser clients).

sselib.event(event [, callback])

Returns a SSE-serialized event string that can be used with a following data type to trigger a event in the browser.

sselib.id(id [, callback])

Returns a SSE-serialized id string. If called without id it will use a UNIX timestamp as the id.

sselib.data(data [, callback])

Returns a SSE-serialized data string.

sselib.message(obj [, callback])

message is provided as a meta-serializer. It will return a SSE-serialized string from a message object you pass in.

sselib.headers([callback])

Returns a Object containing valid HTTP-headers suitable for a http.ServerResponse.

Concepts

Message Object

sselib.message() graph

A message object is simply a javascript object containing the data and event keys, it can also optionally be given a id key.

Example

{event: 'update', data: 'I am a stray cat.', id: 789}

License

BSD (see LICENSE.md)

Made by massförströelse