mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 20:30:23 +00:00

We can now reply empty close, ping and pong frames, or close frames with a payload. This means that we can send a frame and then close the connection in a single operation. If a close packet is sent, the connection is closed immediately, even if there was frames that remained to be sent. Cowboy will silently drop any extra frames in the list given as a reply.
27 lines
701 B
Erlang
27 lines
701 B
Erlang
%% Feel free to use, reuse and abuse the code in this file.
|
|
|
|
-module(ws_send_many_handler).
|
|
-behaviour(cowboy_websocket_handler).
|
|
|
|
-export([init/3]).
|
|
-export([websocket_init/3]).
|
|
-export([websocket_handle/3]).
|
|
-export([websocket_info/3]).
|
|
-export([websocket_terminate/3]).
|
|
|
|
init(_Any, _Req, _Opts) ->
|
|
{upgrade, protocol, cowboy_websocket}.
|
|
|
|
websocket_init(_TransportName, Req, Sequence) ->
|
|
Req2 = cowboy_req:compact(Req),
|
|
erlang:send_after(10, self(), send_many),
|
|
{ok, Req2, Sequence}.
|
|
|
|
websocket_handle(_Frame, Req, State) ->
|
|
{ok, Req, State}.
|
|
|
|
websocket_info(send_many, Req, State = [{sequence, Sequence}]) ->
|
|
{reply, Sequence, Req, State}.
|
|
|
|
websocket_terminate(_Reason, _Req, _State) ->
|
|
ok.
|