From 1d01d0fc06bae095e488f17a172246907eceea3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Mon, 15 Aug 2016 19:21:38 +0200 Subject: Allow websocket_init/1 to reply/close/hibernate --- test/handlers/ws_init_h.erl | 47 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 test/handlers/ws_init_h.erl (limited to 'test/handlers') diff --git a/test/handlers/ws_init_h.erl b/test/handlers/ws_init_h.erl new file mode 100644 index 0000000..08971ae --- /dev/null +++ b/test/handlers/ws_init_h.erl @@ -0,0 +1,47 @@ +%% This module returns a different value in websocket_init/1 depending on the query string. + +-module(ws_init_h). +-behavior(cowboy_websocket). + +-export([init/2]). +-export([websocket_init/1]). +-export([websocket_handle/2]). +-export([websocket_info/2]). + +init(Req, _) -> + State = binary_to_atom(cowboy_req:qs(Req), latin1), + {cowboy_websocket, Req, State}. + +%% Sleep to make sure the HTTP response was sent. +websocket_init(State) -> + timer:sleep(100), + do_websocket_init(State). + +do_websocket_init(State=ok) -> + {ok, State}; +do_websocket_init(State=ok_hibernate) -> + {ok, State, hibernate}; +do_websocket_init(State=reply) -> + {reply, {text, "Hello"}, State}; +do_websocket_init(State=reply_hibernate) -> + {reply, {text, "Hello"}, State, hibernate}; +do_websocket_init(State=reply_close) -> + {reply, close, State}; +do_websocket_init(State=reply_close_hibernate) -> + {reply, close, State, hibernate}; +do_websocket_init(State=reply_many) -> + {reply, [{text, "Hello"}, {binary, "World"}], State}; +do_websocket_init(State=reply_many_hibernate) -> + {reply, [{text, "Hello"}, {binary, "World"}], State, hibernate}; +do_websocket_init(State=reply_many_close) -> + {reply, [{text, "Hello"}, close], State}; +do_websocket_init(State=reply_many_close_hibernate) -> + {reply, [{text, "Hello"}, close], State, hibernate}; +do_websocket_init(State=stop) -> + {stop, State}. + +websocket_handle(_, State) -> + {ok, State}. + +websocket_info(_, State) -> + {ok, State}. -- cgit v1.2.3