SseParser

Module to parse server sent event as spicified in SSE standard

Full documentation can be found at https://hexdocs.pm/sse_parser.

Installation

The package can be installed by adding sse_parser to your list of dependencies in mix.exs:

def deps do
  [
    {:sse_parser, "~> 2.0.0"}
  ]
end

Usage

Simplest way to use this librari is using SseParser.feed_and_interpret/1 interface. You pass chunk from SSE source and it will return parsed and reduced events

iex> SseParser.feed_and_interpret("event: put\ndata: {\"name\": \"Testovic\"}\n\n")
{:ok, [
  [
    event: "put",
    data: "{\"name\": \"Testovic\"}"
  ]
], ""}

It is also posible to use this interface partiali, because interpret step could remove a lot of information

iex> SseParser.feed(":Put event\nevent: put\ndata: {\"name\": \"Testovic\"}\n\n")
{:ok, [
  "Put event", 
  {"event", "put"}, 
  {"data", "{\"name\": \"Testovic\"}"}
], ""}
iex> SseParser.interpret([["Put event", {"event", "put"}, {"data", "{\"name\": \"Testovic\"}"}]])
[
  [
    event: "put",
    data: "{\"name\": \"Testovic\"}"
  ]
]