aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/websocket/src/websocket_app.erl5
-rw-r--r--test/examples_SUITE.erl29
2 files changed, 32 insertions, 2 deletions
diff --git a/examples/websocket/src/websocket_app.erl b/examples/websocket/src/websocket_app.erl
index 5a37227..f89882f 100644
--- a/examples/websocket/src/websocket_app.erl
+++ b/examples/websocket/src/websocket_app.erl
@@ -17,8 +17,9 @@ start(_Type, _Args) ->
{"/static/[...]", cowboy_static, {priv_dir, websocket, "static"}}
]}
]),
- {ok, _} = cowboy:start_http(http, 100, [{port, 8080}],
- [{env, [{dispatch, Dispatch}]}]),
+ {ok, _} = cowboy:start_clear(http, 100, [{port, 8080}], #{
+ env => #{dispatch => Dispatch}
+ }),
websocket_sup:start_link().
stop(_State) ->
diff --git a/test/examples_SUITE.erl b/test/examples_SUITE.erl
index 096be02..42d0be8 100644
--- a/test/examples_SUITE.erl
+++ b/test/examples_SUITE.erl
@@ -249,3 +249,32 @@ do_markdown_middleware(Transport, Protocol, Config) ->
{200, Headers, <<"<h1>", _/bits >>} = do_get(Transport, Protocol, "/video.html", Config),
{_, <<"text/html">>} = lists:keyfind(<<"content-type">>, 1, Headers),
ok.
+
+%% Websocket.
+
+websocket(_) ->
+ doc("Websocket example."),
+ try
+ do_compile_and_start(websocket),
+ %% We can only initiate a Websocket connection from HTTP/1.1.
+ {ok, Pid} = gun:open("127.0.0.1", 8080, #{protocols => [http], retry => 0}),
+ {ok, http} = gun:await_up(Pid),
+ _ = monitor(process, Pid),
+ gun:ws_upgrade(Pid, "/websocket", [], #{compress => true}),
+ receive
+ {gun_ws_upgrade, Pid, ok, _} ->
+ ok;
+ Msg1 ->
+ exit({connection_failed, Msg1})
+ end,
+ gun:ws_send(Pid, {text, <<"hello">>}),
+ receive
+ {gun_ws, Pid, {text, <<"That's what she said! hello">>}} ->
+ ok;
+ Msg2 ->
+ exit({receive_failed, Msg2})
+ end,
+ gun:ws_send(Pid, close)
+ after
+ do_stop(websocket)
+ end.