stream_body(Data, IsFin, Req :: cowboy_req:req()) -> ok Data :: iodata() IsFin :: fin | nofin
cowboy_req:stream_body - Stream the response body
stream_body(Data, IsFin, Req :: cowboy_req:req()) -> ok Data :: iodata() IsFin :: fin | nofin
Stream the response body.
This function may be called as many times as needed after initiating a response using the cowboy_req:stream_reply(3) function.
The second argument indicates if this call is the final
call. Use the nofin
value until you know no more data
will be sent. The final call should use fin
(possibly
with an empty data value).
Note that not using fin
for the final call is not an
error; Cowboy will take care of it when the request
handler terminates if needed. Depending on the resource
it may however be more efficient to do it as early as
possible.
You do not need to handle HEAD requests specifically as Cowboy will ensure no data is sent when you call this function.
The data to be sent.
A flag indicating whether this is the final piece of data to be sent.
The Req object.
The atom ok
is always returned. It can be safely ignored.
2.0: Function introduced. Replaces chunk/2
.
Req = cowboy_req:stream_reply(200, #{ <<"content-type">> => <<"text/plain">> }, Req0), cowboy_req:stream_body(<<"Hello\n">>, nofin, Req), timer:sleep(1000), cowboy_req:stream_body(<<"World!\n">>, fin, Req).