diff options
Diffstat (limited to 'examples/eventsource/src/eventsource_h.erl')
-rw-r--r-- | examples/eventsource/src/eventsource_h.erl | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/examples/eventsource/src/eventsource_h.erl b/examples/eventsource/src/eventsource_h.erl new file mode 100644 index 0000000..ba5d866 --- /dev/null +++ b/examples/eventsource/src/eventsource_h.erl @@ -0,0 +1,25 @@ +%% Feel free to use, reuse and abuse the code in this file. + +%% @doc EventSource emitter. +-module(eventsource_h). + +-export([init/2]). +-export([info/3]). + +init(Req0, Opts) -> + Req = cowboy_req:stream_reply(200, #{ + <<"content-type">> => <<"text/event-stream">> + }, Req0), + erlang:send_after(1000, self(), {message, "Tick"}), + {cowboy_loop, Req, Opts}. + +info({message, Msg}, Req, State) -> + cowboy_req:stream_events(#{ + id => id(), + data => Msg + }, nofin, Req), + erlang:send_after(1000, self(), {message, "Tick"}), + {ok, Req, State}. + +id() -> + integer_to_list(erlang:unique_integer([positive, monotonic]), 16). |