mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 12:20:24 +00:00
Add shutdown_reason Websocket command
This allows changing the normal exit reason of Websocket processes, providing a way to signal other processes of why the exit occurred.
This commit is contained in:
parent
cc54c207e3
commit
d52e84bdd9
5 changed files with 87 additions and 6 deletions
|
@ -52,7 +52,8 @@ init_dispatch(Name) ->
|
|||
{"/info", ws_info_commands_h, RunOrHibernate},
|
||||
{"/active", ws_active_commands_h, RunOrHibernate},
|
||||
{"/deflate", ws_deflate_commands_h, RunOrHibernate},
|
||||
{"/set_options", ws_set_options_commands_h, RunOrHibernate}
|
||||
{"/set_options", ws_set_options_commands_h, RunOrHibernate},
|
||||
{"/shutdown_reason", ws_shutdown_reason_commands_h, RunOrHibernate}
|
||||
]}]).
|
||||
|
||||
%% Support functions for testing using Gun.
|
||||
|
@ -286,3 +287,21 @@ websocket_set_options_idle_timeout(Config) ->
|
|||
after 2000 ->
|
||||
error(timeout)
|
||||
end.
|
||||
|
||||
websocket_shutdown_reason(Config) ->
|
||||
doc("The command {shutdown_reason, any()} can be used to "
|
||||
"change the shutdown reason of a Websocket connection."),
|
||||
ConnPid = gun_open(Config),
|
||||
StreamRef = gun:ws_upgrade(ConnPid, "/shutdown_reason", [
|
||||
{<<"x-test-pid">>, pid_to_list(self())}
|
||||
]),
|
||||
{upgrade, [<<"websocket">>], _} = gun:await(ConnPid, StreamRef),
|
||||
WsPid = receive {ws_pid, P} -> P after 1000 -> error(timeout) end,
|
||||
MRef = monitor(process, WsPid),
|
||||
WsPid ! {self(), {?MODULE, ?FUNCTION_NAME}},
|
||||
receive
|
||||
{'DOWN', MRef, process, WsPid, {shutdown, {?MODULE, ?FUNCTION_NAME}}} ->
|
||||
ok
|
||||
after 1000 ->
|
||||
error(timeout)
|
||||
end.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue