0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-15 04:30:25 +00:00

Document the commands based Websocket interface

The old interface with ok|reply|stop tuples is deprecated.
This commit is contained in:
Loïc Hoguin 2019-10-06 16:51:27 +02:00
parent 2b38526351
commit 3977f2b96f
No known key found for this signature in database
GPG key ID: 8A9DF795F6FED764
13 changed files with 108 additions and 81 deletions

View file

@ -105,7 +105,7 @@ the upgrade:
[source,erlang]
----
websocket_init(State) ->
{reply, {text, <<"Hello!">>}, State}.
{[{text, <<"Hello!">>}], State}.
----
=== Receiving frames
@ -122,7 +122,7 @@ ignores all others:
[source,erlang]
----
websocket_handle(Frame = {text, _}, State) ->
{reply, Frame, State};
{[Frame], State};
websocket_handle(_Frame, State) ->
{ok, State}.
----
@ -145,7 +145,7 @@ and ignores all others:
[source,erlang]
----
websocket_info({log, Text}, State) ->
{reply, {text, Text}, State};
{[{text, Text}], State};
websocket_info(_Info, State) ->
{ok, State}.
----
@ -167,24 +167,23 @@ websocket_info(_Info, State) ->
{ok, State}.
----
To send one frame, return a reply tuple with the frame to send:
To send one frame, return the frame to be sent:
[source,erlang]
----
websocket_info(_Info, State) ->
{reply, {text, <<"Hello!">>}, State}.
{[{text, <<"Hello!">>}], State}.
----
You can send frames of any type: text, binary, ping, pong
or close frames.
To send many frames at once, return a reply tuple with the
list of frames to send:
You can send many frames at the same time:
[source,erlang]
----
websocket_info(_Info, State) ->
{reply, [
{[
{text, "Hello"},
{text, <<"world!">>},
{binary, <<0:8000>>}
@ -246,18 +245,18 @@ Cowboy will have a more reasonable default.
The Websocket connection process can be set to hibernate
after the callback returns.
Simply add an `hibernate` field to the ok or reply tuples:
Simply add an `hibernate` field to the returned tuple:
[source,erlang]
----
websocket_init(State) ->
{ok, State, hibernate}.
{[], State, hibernate}.
websocket_handle(_Frame, State) ->
{ok, State, hibernate}.
{[], State, hibernate}.
websocket_info(_Info, State) ->
{reply, {text, <<"Hello!">>}, State, hibernate}.
{[{text, <<"Hello!">>}], State, hibernate}.
----
It is highly recommended to write your handlers with
@ -289,5 +288,5 @@ The following example sends a close frame with a reason message:
[source,erlang]
----
websocket_info(_Info, State) ->
{reply, {close, 1000, <<"some-reason">>}, State}.
{[{close, 1000, <<"some-reason">>}], State}.
----