2011-01-07 8 views
5

Faccio richiesta asincrona a qualche server http Erlang cliente utilizzando http:request(get, {Url, []}, [], [{sync, false}, {stream, self}]), dove Url è URL del server. Tutto è ok e dei dati è ottenuto da handle_info in gen_server del processo che chiamano http:request/4. Ma dovrei ottenere il messaggio quando Connect è rotto e stream_end messaggio non hai. L'utilizzo del timeout non è utilizzabile per me, perché il server può rispondere a molto tempo.Erlang. Richiesta http asincrona. Come sapere quando la connessione è interrotta?

E 'possibile ottenere il messaggio sulla rotta collegare in handle_info? Se non lo è , suggerire il modo di sapere quando la connessione è interrotta?

risposta

6

Per ulteriori sollevamento pesante di richieste HTTP, utilizzare iBrowse:

https://github.com/cmullaparthi/ibrowse

Ha molte più manopole per girare e girare per le richieste ed è più completa w.r.t. molte cose. Se http/httpc non risolve il tuo problema, vale la pena di investigare se andrà a ibrowse.

+0

Grazie per la risposta. Ho provato ad usare ibrowse prima. Ma, a quanto pare, qualcosa va storto. Sto scrivendo client per API di streaming di Twitter e quando utilizzo ibrowse non ottengo nulla, ad esempio - http://pastebin.com/fJNELWJE. Quando uso il client http di erlang, tutto funziona. Cioè molti messaggi hanno –

+0

Il tuo esempio funziona qui, per la cronaca. –

+0

quando posso ricevere messaggi da Twitter? .. perché sono sicuro che lo invieranno dopo la connessione. –

Problemi correlati