Skip to content

Utility functions for serializing and deserializing SSE messages

License

Notifications You must be signed in to change notification settings

wdullaer/sse-utils

Repository files navigation

SSE Utils

NPM Version Build Status Dependency Status Code Climate Test Coverage

This is a small package that aims to be the server sent events equivalent of the JSON built-in module. It allows you to stringify an SSE object so it can be put on the wire. It allows you parse a stringified SSE object (you'll normally use another library to create an SSE client, but this can be helpfull for testing purposes).

This library is "done", in the sense that it is feature complete and has no known bugs. It is still maintained and bugs will be fixed. It also has no dependencies, which means that other than to fix bugs in the library code, there is no reason to make new releases.

Installation

npm install sse-utils

Examples

Individual Messages

let sse = require('sse-utils');

let input = {data: {foo: 'bar'}};
let sseString = sse.stringify(input);
console.log(sseString);
let output = sse.parse(sseString);
console.log(output);

Multiple Messages

let sse = require('sse-utils');

let input = [{data: {foo: 'bar'}}, {data: {bar: 'baz'}}];
let sseString = sse.stringifyAll(input);
console.log(sseString);

let output = sse.parseAll(sseString);
console.log(sseString);

TODO

  • Add support for asynchronous (de)serializers

API

Table of Contents

SSEObject

Type: object

Properties

  • data any The payload of the message
  • id string? The ID of the message (for reconnection)
  • event string? The type of event being sent

Serializer

Custom serialization function

Type: function

Parameters

  • payload any

Returns string

Deserializer

Custom deserialization function

Type: function

Parameters

Returns any

stringify

Stringify the data to an SSE message

Parameters

  • payload SSEObject The payload of the sse message: contains data, id?, event?

  • serializer Serializer? A specialized function that marshals the data into a string (optional)

  • Throws TypeError Arguments should have their correct types

Returns string The data as an SSE message

stringifyAll

Stringify an array of data to SSE messages

Parameters

  • payload array<SSEObject> An array of SSEObjects to be serialized

  • serializer Serializer? A specialized function that marshals the data into a string (optional)

  • Throws TypeError Arguments should have their correct types

Returns string The data is a single SSE message string

parse

Parse an SSE message and return the data

Parameters

  • sseObject string The SSE message to parse

  • deserializer Deserializer? A specialized function to reconstruct the payload

  • Throws TypeError sseObject should be a string including the terminating newlines

Returns SSEObject The data sent in this SSE message

parseAll

Parse multiple SSE messages and return an array of SSEObjects

Parameters

  • sseObjects string The SSE messages to parse

  • deserializer Deserializer? A specialized function to reconstruct the payload

  • Throws TypeError sseObjects should be a string including terminating newlines

Returns array<SSEObject> An array with the data sent in the messages

About

Utility functions for serializing and deserializing SSE messages

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •