Packages
raxx
0.2.0
1.1.0
1.0.1
1.0.0
1.0.0-rc.3
1.0.0-rc.2
retired
1.0.0-rc.1
retired
1.0.0-rc.0
retired
0.18.1
0.18.0
0.17.6
0.17.5
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.1
0.16.0
retired
0.15.11
0.15.10
0.15.9
0.15.8
0.15.7
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.14
0.14.13
0.14.12
0.14.11
0.14.10
0.14.9
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.0
0.12.3
0.12.2
0.12.1
0.12.0
0.11.1
0.11.0
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.0
0.8.2
0.8.1
0.8.0
0.7.1
0.7.0
0.6.0
0.5.2
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.0
0.2.0
0.1.0
0.0.1
Interface for HTTP webservers, frameworks and clients.
Current section
Files
Jump to
Current section
Files
lib/raxx/server_sent_events.ex
defmodule Raxx.ServerSentEvents do
defmodule Event do
defstruct [
id: nil,
data: "",
event: nil
]
end
def upgrade(options, handler) do
%{
upgrade: __MODULE__,
handler: handler,
options: options
}
end
def no_event do
# Annoyingly needs nil checking but there is no native option type in elixir
:nil
end
def event(data) when is_binary(data) do
%{event: nil, data: data}
end
def event(valid =%{event: _type, data: _data}) do
valid
end
# FIXME call event to chunk and use Streaming functionality
# Does streaming stop by sending empy chunk
def event_to_string(%{data: ""}) do
""
end
def event_to_string(%{event: nil, data: data}) do
"data: #{data}\n\n"
end
def event_to_string(%{event: event, data: data}) do
"event: #{event}\ndata: #{data}\n\n"
end
def close() do
%Event{}
end
end