diff options
author | Loïc Hoguin <[email protected]> | 2018-09-21 14:04:20 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2018-09-21 15:01:57 +0200 |
commit | f810d8dd6496da713e7c70a5e146120de3695774 (patch) | |
tree | 0572028ff1ea5fdc6d3d4b081d75ebdbb6bf557d /test/handlers/ws_active_commands_h.erl | |
parent | 6e784f1a454c6bdeab839d99d59dac992d430c97 (diff) | |
download | cowboy-f810d8dd6496da713e7c70a5e146120de3695774.tar.gz cowboy-f810d8dd6496da713e7c70a5e146120de3695774.tar.bz2 cowboy-f810d8dd6496da713e7c70a5e146120de3695774.zip |
Add the {active, boolean()} Websocket command
This command is currently not documented. It allows disabling
the reading of incoming data from the socket, and can be used
as a poor man's flow control.
Diffstat (limited to 'test/handlers/ws_active_commands_h.erl')
-rw-r--r-- | test/handlers/ws_active_commands_h.erl | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/test/handlers/ws_active_commands_h.erl b/test/handlers/ws_active_commands_h.erl new file mode 100644 index 0000000..4cdb3b1 --- /dev/null +++ b/test/handlers/ws_active_commands_h.erl @@ -0,0 +1,30 @@ +%% This module takes commands from the x-commands header +%% and returns them in the websocket_init/1 callback. + +-module(ws_active_commands_h). +-behavior(cowboy_websocket). + +-export([init/2]). +-export([websocket_init/1]). +-export([websocket_handle/2]). +-export([websocket_info/2]). + +init(Req, RunOrHibernate) -> + {cowboy_websocket, Req, RunOrHibernate}. + +websocket_init(State=run) -> + erlang:send_after(1500, self(), active_true), + {[{active, false}], State}; +websocket_init(State=hibernate) -> + erlang:send_after(1500, self(), active_true), + {[{active, false}], State, hibernate}. + +websocket_handle(Frame, State=run) -> + {[Frame], State}; +websocket_handle(Frame, State=hibernate) -> + {[Frame], State, hibernate}. + +websocket_info(active_true, State=run) -> + {[{active, true}], State}; +websocket_info(active_true, State=hibernate) -> + {[{active, true}], State, hibernate}. |