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

The 'shutdown' atom has a specific meaning inside OTP. We are instead going to use 'stop' which is pretty much the equivalent of what we actually do. 'shutdown' is now reserved for future special processes implementation.
25 lines
672 B
Erlang
25 lines
672 B
Erlang
%% This module implements a loop handler for long-polling.
|
|
%% It starts by sending itself a message after 200ms,
|
|
%% then sends another after that for a total of 3 messages.
|
|
%% When it receives the last message, it sends a 102 reply back.
|
|
|
|
-module(long_polling_h).
|
|
|
|
-export([init/2]).
|
|
-export([info/3]).
|
|
-export([terminate/3]).
|
|
|
|
init(Req, _) ->
|
|
erlang:send_after(200, self(), timeout),
|
|
{cowboy_loop, Req, 2, 5000, hibernate}.
|
|
|
|
info(timeout, Req, 0) ->
|
|
{stop, cowboy_req:reply(102, Req), 0};
|
|
info(timeout, Req, Count) ->
|
|
erlang:send_after(200, self(), timeout),
|
|
{ok, Req, Count - 1, hibernate}.
|
|
|
|
terminate(stop, _, 0) ->
|
|
ok;
|
|
terminate({error, overflow}, _, _) ->
|
|
ok.
|