0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-14 20:30:23 +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:
Loïc Hoguin 2019-10-10 11:33:35 +02:00
parent cc54c207e3
commit d52e84bdd9
No known key found for this signature in database
GPG key ID: 8A9DF795F6FED764
5 changed files with 87 additions and 6 deletions

View file

@ -81,6 +81,12 @@ Cowboy 2.7 requires Erlang/OTP 20.0 or greater.
is now considered stable and has been documented.
The old interface is now deprecated.
* A new Websocket handler command `shutdown_reason`
can be used to change the normal exit reason of
Websocket processes. By default `normal` is used;
with this command the exit reason can be changed
to `{shutdown, ShutdownReason}`.
* The experimental stream handlers `cowboy_metrics_h`
and `cowboy_tracer_h` are now considered stable and
have been documented.

View file

@ -141,6 +141,7 @@ commands() :: [Command]
Command :: {active, boolean()}
| {deflate, boolean()}
| {set_options, #{idle_timeout => timeout()}}
| {shutdown_reason, any()}
| Frame :: cow_ws:frame()
----
@ -163,6 +164,15 @@ set_options::
Set Websocket options. Currently only the option `idle_timeout`
may be updated from a Websocket handler.
shutdown_reason::
Change the shutdown reason. The Websocket process will exit
with reason `normal` by default. This command can be used to
exit with reason `{shutdown, ShutdownReason}` under normal
conditions. This command has no effect when the Websocket
process exits abnormally, for example following a crash in a
handler callback.
Frame::
Send the corresponding Websocket frame.
@ -266,8 +276,9 @@ normal circumstances if necessary.
== Changelog
* *2.7*: The commands based interface has been added. The old
interface is now deprecated.
* *2.7*: The commands based interface has been documented.
The old interface is now deprecated.
* *2.7*: The command `shutdown_reason` was introduced.
* *2.7*: The option `validate_utf8` has been added.
* *2.6*: Deflate options can now be configured via `deflate_opts`.
* *2.0*: The Req object is no longer passed to Websocket callbacks.