Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    sse-stream-authpublic

    sse-stream-auth

    This is a fork of sse-stream that adds cookie-based authentication support & dynamic connection creation

    See https://github.com/jameswomack/sse-stream-auth-example.git for an example of using auth and subscribing to multiple channels that you've created dynamically.

    Expose HTML5 Server Sent Events as an installable appliance on Node.JS http servers; connections are emitted as Writable streams.

     
    var http = require('http')
      , fs = require('fs')
      , through = require('through')
      , sse = require('sse-stream-auth')({ prefixes: ['/awesomeApp'], create: true }) // Allow dynamic connection creation
      , serv
     
    module.exports = serv = http.createServer(function(req, resp) {
      resp.setHeader('content-type', 'text/html')
      resp.end('<html><body><script type="text/javascript">('+js+')()</script></body></html>')
    })
     
    sse.install(serv)
     
    sse.on('connection', function(client) {
      fs.createReadStream('/usr/share/dict/words')
        .pipe(through(function(buf) { this.emit('data', buf.toString()) }))
        .pipe(client)
    })
     
    // client-side code:
    function js() {
      var es = new EventSource('/awesomeApp/someChannelNameHere')
        , pre = document.createElement('pre')
        , closed = false
     
      document.body.appendChild(pre)
     
      es.onmessage = function(ev) {
        if(closed) return
     
        pre.appendChild(document.createTextNode(ev.data))
     
        window.scrollTo(0, pre.clientHeight)
      }
     
      es.addEventListener('end', function() {
        es.close()
        closed = true
      }, true)
     
      es.onerror = function(e) {
        closed = true
      }
    }
     

    API

    sse = require('sse-stream-auth')(options)

    Create a SSE server that emits connection events on new, successful eventstream connections.

    The argument must be an options object:

    { prefixes: ['/awesomeApp', '/awesomeUsername']
    , keepalive: 1000 }

    keepalive determines the interval time in ms that keepalives will be sent to all connected clients.

    sse.on('connection', function(client))

    client is a writable stream representing a client connection (request response pair).

    Of note, all data sent through this connection will be stringified before sending due to the event stream spec.

    client.retry(integer ms)

    Send a "retry" message that lets the client know how many MS to wait until retrying a connection that ended.

    license

    MIT

    install

    npm i sse-stream-auth

    Downloadsweekly downloads

    17

    version

    3.0.1

    license

    MIT

    repository

    githubgithub

    last publish

    collaborators

    • avatar