Incremental parser for Server Sent Events streams.
Summary
Functions
Parses a binary chunk with a new parser.
Parses a binary chunk using an existing parser state.
Types
@type event() :: %{ :data => binary(), optional(:event) => binary(), optional(:id) => binary(), optional(:retry) => non_neg_integer() }
Functions
@spec new() :: t()
Returns a new parser state for parse/2.
Parses a binary chunk with a new parser.
Returns complete events and the updated parser state.
Examples
iex> {events, _parser} =
...> ServerSentEvents.Parser.parse("id: 1\nevent: message\nretry: 5000\ndata: hello\n\n")
iex> events
[%{data: "hello", event: "message", id: "1", retry: 5000}]
Parses a binary chunk using an existing parser state.
Returns complete events and a parser state that retains incomplete input for the next chunk.
Examples
iex> parser = ServerSentEvents.Parser.new()
iex> {[], parser} = ServerSentEvents.Parser.parse(parser, "event: message\n")
iex> {events, _parser} = ServerSentEvents.Parser.parse(parser, "data: hello\n\n")
iex> events
[%{data: "hello", event: "message"}]