mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 12:20:24 +00:00
Document the commands based Websocket interface
The old interface with ok|reply|stop tuples is deprecated.
This commit is contained in:
parent
2b38526351
commit
3977f2b96f
13 changed files with 108 additions and 81 deletions
|
@ -26,11 +26,11 @@ init(Req=#{qs := Qs}, State) ->
|
|||
}}.
|
||||
|
||||
websocket_handle({text, Data}, State) ->
|
||||
{reply, {text, Data}, State};
|
||||
{[{text, Data}], State};
|
||||
websocket_handle({binary, Data}, State) ->
|
||||
{reply, {binary, Data}, State};
|
||||
{[{binary, Data}], State};
|
||||
websocket_handle(_, State) ->
|
||||
{ok, State}.
|
||||
{[], State}.
|
||||
|
||||
websocket_info(_, State) ->
|
||||
{ok, State}.
|
||||
{[], State}.
|
||||
|
|
|
@ -13,11 +13,11 @@ init(Req, State) ->
|
|||
}}.
|
||||
|
||||
websocket_handle({text, Data}, State) ->
|
||||
{reply, {text, Data}, State};
|
||||
{[{text, Data}], State};
|
||||
websocket_handle({binary, Data}, State) ->
|
||||
{reply, {binary, Data}, State};
|
||||
{[{binary, Data}], State};
|
||||
websocket_handle(_, State) ->
|
||||
{ok, State}.
|
||||
{[], State}.
|
||||
|
||||
websocket_info(_, State) ->
|
||||
{ok, State}.
|
||||
{[], State}.
|
||||
|
|
|
@ -18,30 +18,28 @@ websocket_init(State) ->
|
|||
do_websocket_init(State).
|
||||
|
||||
do_websocket_init(State=ok) ->
|
||||
{ok, State};
|
||||
{[], State};
|
||||
do_websocket_init(State=ok_hibernate) ->
|
||||
{ok, State, hibernate};
|
||||
{[], State, hibernate};
|
||||
do_websocket_init(State=reply) ->
|
||||
{reply, {text, "Hello"}, State};
|
||||
{[{text, "Hello"}], State};
|
||||
do_websocket_init(State=reply_hibernate) ->
|
||||
{reply, {text, "Hello"}, State, hibernate};
|
||||
{[{text, "Hello"}], State, hibernate};
|
||||
do_websocket_init(State=reply_close) ->
|
||||
{reply, close, State};
|
||||
{[close], State};
|
||||
do_websocket_init(State=reply_close_hibernate) ->
|
||||
{reply, close, State, hibernate};
|
||||
{[close], State, hibernate};
|
||||
do_websocket_init(State=reply_many) ->
|
||||
{reply, [{text, "Hello"}, {binary, "World"}], State};
|
||||
{[{text, "Hello"}, {binary, "World"}], State};
|
||||
do_websocket_init(State=reply_many_hibernate) ->
|
||||
{reply, [{text, "Hello"}, {binary, "World"}], State, hibernate};
|
||||
{[{text, "Hello"}, {binary, "World"}], State, hibernate};
|
||||
do_websocket_init(State=reply_many_close) ->
|
||||
{reply, [{text, "Hello"}, close], State};
|
||||
{[{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}.
|
||||
{[{text, "Hello"}, close], State, hibernate}.
|
||||
|
||||
websocket_handle(_, State) ->
|
||||
{ok, State}.
|
||||
{[], State}.
|
||||
|
||||
websocket_info(_, State) ->
|
||||
{ok, State}.
|
||||
{[], State}.
|
||||
|
|
|
@ -403,13 +403,6 @@ ws_init_return_reply_many_close_hibernate(Config) ->
|
|||
1:1, 0:3, 8:4, 0:8 >>} = gen_tcp:recv(Socket, 9, 6000),
|
||||
ok.
|
||||
|
||||
ws_init_return_stop(Config) ->
|
||||
doc("Handler closes immediately after the handshake."),
|
||||
{ok, Socket, _} = do_handshake("/ws_init?stop", Config),
|
||||
{ok, << 1:1, 0:3, 8:4, 0:1, 2:7, 1000:16 >>} = gen_tcp:recv(Socket, 0, 6000),
|
||||
{error, closed} = gen_tcp:recv(Socket, 0, 6000),
|
||||
ok.
|
||||
|
||||
ws_init_shutdown_before_handshake(Config) ->
|
||||
doc("Handler stops before Websocket handshake."),
|
||||
{ok, Socket} = gen_tcp:connect("localhost", config(port, Config), [binary, {active, false}]),
|
||||
|
|
|
@ -12,11 +12,11 @@ init(Req, _) ->
|
|||
}}.
|
||||
|
||||
websocket_handle({text, Data}, State) ->
|
||||
{reply, {text, Data}, State};
|
||||
{[{text, Data}], State};
|
||||
websocket_handle({binary, Data}, State) ->
|
||||
{reply, {binary, Data}, State};
|
||||
{[{binary, Data}], State};
|
||||
websocket_handle(_Frame, State) ->
|
||||
{ok, State}.
|
||||
{[], State}.
|
||||
|
||||
websocket_info(_Info, State) ->
|
||||
{ok, State}.
|
||||
{[], State}.
|
||||
|
|
|
@ -12,17 +12,17 @@ init(Req, _) ->
|
|||
|
||||
websocket_init(State) ->
|
||||
erlang:start_timer(1000, self(), <<"websocket_init">>),
|
||||
{ok, State}.
|
||||
{[], State}.
|
||||
|
||||
websocket_handle({text, Data}, State) ->
|
||||
{reply, {text, Data}, State};
|
||||
{[{text, Data}], State};
|
||||
websocket_handle({binary, Data}, State) ->
|
||||
{reply, {binary, Data}, State};
|
||||
{[{binary, Data}], State};
|
||||
websocket_handle(_Frame, State) ->
|
||||
{ok, State}.
|
||||
{[], State}.
|
||||
|
||||
websocket_info({timeout, _Ref, Msg}, State) ->
|
||||
erlang:start_timer(1000, self(), <<"websocket_handle">>),
|
||||
{reply, {text, Msg}, State};
|
||||
{[{text, Msg}], State};
|
||||
websocket_info(_Info, State) ->
|
||||
{ok, State}.
|
||||
{[], State}.
|
||||
|
|
|
@ -1,22 +1,18 @@
|
|||
-module(ws_max_frame_size).
|
||||
|
||||
-export([init/2]).
|
||||
-export([websocket_init/1]).
|
||||
-export([websocket_handle/2]).
|
||||
-export([websocket_info/2]).
|
||||
|
||||
init(Req, State) ->
|
||||
{cowboy_websocket, Req, State, #{max_frame_size => 8}}.
|
||||
|
||||
websocket_init(State) ->
|
||||
{ok, State}.
|
||||
|
||||
websocket_handle({text, Data}, State) ->
|
||||
{reply, {text, Data}, State};
|
||||
{[{text, Data}], State};
|
||||
websocket_handle({binary, Data}, State) ->
|
||||
{reply, {binary, Data}, State};
|
||||
{[{binary, Data}], State};
|
||||
websocket_handle(_Frame, State) ->
|
||||
{ok, State}.
|
||||
{[], State}.
|
||||
|
||||
websocket_info(_Info, State) ->
|
||||
{ok, State}.
|
||||
{[], State}.
|
||||
|
|
|
@ -12,10 +12,10 @@ init(Req, Opts) ->
|
|||
|
||||
websocket_init(State) ->
|
||||
erlang:send_after(10, self(), send_many),
|
||||
{ok, State}.
|
||||
{[], State}.
|
||||
|
||||
websocket_handle(_Frame, State) ->
|
||||
{ok, State}.
|
||||
{[], State}.
|
||||
|
||||
websocket_info(send_many, State = [{sequence, Sequence}]) ->
|
||||
{reply, Sequence, State}.
|
||||
{Sequence, State}.
|
||||
|
|
|
@ -13,10 +13,10 @@ init(Req, _) ->
|
|||
}}.
|
||||
|
||||
websocket_handle({text, Data}, State) ->
|
||||
{reply, {text, Data}, State};
|
||||
{[{text, Data}], State};
|
||||
websocket_handle({binary, Data}, State) ->
|
||||
{reply, {binary, Data}, State}.
|
||||
{[{binary, Data}], State}.
|
||||
|
||||
websocket_info(_Info, State) ->
|
||||
erlang:start_timer(500, self(), should_not_cancel_timer),
|
||||
{ok, State}.
|
||||
{[], State}.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue