@braid-protocol/server

This is a simple reference implementation of the braid protocol for nodejs.

Usage no npm install needed!

<script type="module">
  import braidProtocolServer from 'https://cdn.skypack.dev/@braid-protocol/server';
</script>

README

Braid protocol server

This is a simple reference implementation of the braid protocol for nodejs.

Usage:

npm i --save josephg/braid-server

The braid server works to stream a series of values or patches to any client using any nodejs response object. This is compatible with express / connect / polka / etc. Eg, with polka:

const polka = require('polka')
const sirv = require('sirv')
const cors = require('cors')
const braid = require('@braid-protocol/server')

const assets = sirv(__dirname + '/web')

const getDate = () => new Date().toLocaleString() + '\n'

polka()
  .options('/time', cors({methods: ['GET']}))
  .get('/time', cors(), (req, res) => {
    let timer

    if (req.headers.subscribe === 'keep-alive') {
      const stream = braid.stream(res, {
        initialValue: getDate(),
        contentType: 'text/plain',
        onclose() {
          clearInterval(timer)
        },
      })

      timer = setInterval(() => {
        stream.append({ value: getDate() })
      }, 1000)
    } else {
      res.end(getDate())
    }
  })
  .use(assets)
  .listen(2001, (err) => {
    if (err) throw err
    console.log('listening on http://localhost:2001/time')
    console.log('Open http://localhost:2001/ in a browser for a simple demo')
  })