24 lines
602 B
Erlang
24 lines
602 B
Erlang
|
%% This module implements a loop handler that sends
|
||
|
%% the current time every second using SSE. In contrast
|
||
|
%% to sse_clock_h, this one sends a "Connection: close"
|
||
|
%% header.
|
||
|
|
||
|
-module(sse_clock_close_h).
|
||
|
|
||
|
-export([init/2]).
|
||
|
-export([info/3]).
|
||
|
|
||
|
init(Req, State) ->
|
||
|
self() ! timeout,
|
||
|
{cowboy_loop, cowboy_req:stream_reply(200, #{
|
||
|
<<"content-type">> => <<"text/event-stream">>,
|
||
|
<<"connection">> => <<"close">>
|
||
|
}, Req), State}.
|
||
|
|
||
|
info(timeout, Req, State) ->
|
||
|
erlang:send_after(1000, self(), timeout),
|
||
|
cowboy_req:stream_events(#{
|
||
|
data => cowboy_clock:rfc1123()
|
||
|
}, nofin, Req),
|
||
|
{ok, Req, State}.
|