[erlang-questions] Streaming Data using httpc

Paul Peregud <>
Sun Apr 19 20:06:37 CEST 2015


I don't have experience using httpc, so one remark only:

receive_data(RequestId, State) ->
    receive
        {http, {RequestId, stream_start, Headers}} -> do something...,
receive_data(RequestId, State);
        {http, {RequestId, stream, Data}}               - > do
something..., receive_data(RequestId, State);
        {http, {RequestId, stream_end, Headers}}   -> do something...
    end.

Because you want to exit receive_data when no more data is going your way.


On Sun, Apr 19, 2015 at 5:30 PM, John Duffy <> wrote:
> Hi
>
> I'm new to Erlang so please forgive my ignorance. I'm trying to stream data
> from a REST API using httpc, and although I have scoured the internet and
> the documentation I can't find a good example of how to do this, in
> particular how the "sync" and "receiver" options interoperate. My
> unsuccessful module looks like this...
>
> -module(streaming).
>
> -export([data/0]).
>
> data() ->
>     {ok, RequestId} = httpc:request(get,
> {"http://my_streaming_data_source.com", []}, [], [{sync, false}, {receiver,
> self()]),
>     receive_data(RequestId).
>
> receive_data(RequestId) ->
>     receive
>         {http, {RequestId, stream_start, Headers}} -> do something...;
>         {http, {RequestId, stream, Data}}               - > do something...;
>         {http, {RequestId, stream_end, Headers}}   -> do something...;
>     end,
>     receive_data(RequestId).
>
>
> Is the above how I should be structuring my module?
>
> Kind regards
>
> John Duffy
>
>
>
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
>



-- 
Best regards,
Paul Peregud
+48602112091


More information about the erlang-questions mailing list