diff options
-rw-r--r-- | examples/eventsource/src/eventsource_app.erl | 6 | ||||
-rw-r--r-- | examples/eventsource/src/eventsource_handler.erl | 5 | ||||
-rw-r--r-- | test/examples_SUITE.erl | 23 |
3 files changed, 29 insertions, 5 deletions
diff --git a/examples/eventsource/src/eventsource_app.erl b/examples/eventsource/src/eventsource_app.erl index 6ee8611..a5f4289 100644 --- a/examples/eventsource/src/eventsource_app.erl +++ b/examples/eventsource/src/eventsource_app.erl @@ -17,9 +17,9 @@ start(_Type, _Args) -> {"/", cowboy_static, {priv_file, eventsource, "index.html"}} ]} ]), - {ok, _} = cowboy:start_http(http, 100, [{port, 8080}], [ - {env, [{dispatch, Dispatch}]} - ]), + {ok, _} = cowboy:start_clear(http, 100, [{port, 8080}], #{ + env => #{dispatch => Dispatch} + }), eventsource_sup:start_link(). stop(_State) -> diff --git a/examples/eventsource/src/eventsource_handler.erl b/examples/eventsource/src/eventsource_handler.erl index 0e06ede..6dced4b 100644 --- a/examples/eventsource/src/eventsource_handler.erl +++ b/examples/eventsource/src/eventsource_handler.erl @@ -7,8 +7,9 @@ -export([info/3]). init(Req, Opts) -> - Headers = [{<<"content-type">>, <<"text/event-stream">>}], - Req2 = cowboy_req:chunked_reply(200, Headers, Req), + Req2 = cowboy_req:chunked_reply(200, #{ + <<"content-type">> => <<"text/event-stream">> + }, Req), erlang:send_after(1000, self(), {message, "Tick"}), {cowboy_loop, Req2, Opts, 5000}. diff --git a/test/examples_SUITE.erl b/test/examples_SUITE.erl index 6caa7ef..6f651c5 100644 --- a/test/examples_SUITE.erl +++ b/test/examples_SUITE.erl @@ -190,6 +190,29 @@ do_echo_post(Transport, Protocol, Config) -> {ok, <<"this is fun">>} = gun:await_body(ConnPid, Ref), ok. +%% Eventsource. + +eventsource(Config) -> + doc("Eventsource example."), + try + do_compile_and_start(eventsource), + do_eventsource(tcp, http, Config), + do_eventsource(tcp, http2, Config) + after + do_stop(eventsource) + end. + +do_eventsource(Transport, Protocol, Config) -> + ConnPid = gun_open([{port, 8080}, {type, Transport}, {protocol, Protocol}|Config]), + Ref = gun:get(ConnPid, "/eventsource"), + {response, nofin, 200, Headers} = gun:await(ConnPid, Ref), + {_, <<"text/event-stream">>} = lists:keyfind(<<"content-type">>, 1, Headers), + %% Receive a few events. + {data, nofin, << "id: ", _/bits >>} = gun:await(ConnPid, Ref, 2000), + {data, nofin, << "id: ", _/bits >>} = gun:await(ConnPid, Ref, 2000), + {data, nofin, << "id: ", _/bits >>} = gun:await(ConnPid, Ref, 2000), + gun:close(ConnPid). + %% REST Hello World. rest_hello_world(Config) -> |