2011-01-07 2 views
5

Ich mache asynchrone Anfrage an einige Server von Erlang HTTP-Client mit http:request(get, {Url, []}, [], [{sync, false}, {stream, self}]), wobei Url URL des Servers ist. Alles ist in Ordnung und Daten werden durch handle_info in gen_server des Prozesses, die http:request/4 aufrufen. Aber ich sollte Nachricht erhalten, wenn die Verbindung unterbrochen ist und stream_end Nachricht ist nicht erhalten. Timeout ist für mich nicht nutzbar, weil der Server lange Zeit antworten kann.Erlang. Asynchrone HTTP-Anfrage Wie kann ich wissen, wenn die Verbindung unterbrochen ist?

Ist es möglich, Nachricht über unterbrochene Verbindung in handle_info zu erhalten? Wenn nicht, bitte schlagen Sie vor, zu wissen, wann die Verbindung unterbrochen ist?

Antwort

6

Weitere schwere Heben von HTTP-Anfragen verwenden IBrowse:

https://github.com/cmullaparthi/ibrowse

Es viele weitere Knöpfe für Anfragen zu drehen hat und drehen und ist vollständiger w.r.t. viele Dinge. Wenn http/httpc Ihr Problem nicht löst, ist es eine Untersuchung wert, wenn Sie zu ibrowse gehen.

+0

Danke für die Antwort. Ich habe versucht, ibrowse vorher zu verwenden. Aber anscheinend läuft etwas schief. Ich schreibe Client für Twitter-Streaming-API und wenn ich ibrowse benutze bekomme ich nichts, zum Beispiel - http://pastebin.com/fJNELWJE. Wenn ich erlang HTTP-Client verwende, funktioniert alles. I.e. viele Nachrichten sind angekommen. –

+0

Ihr Beispiel funktioniert hier, für die Aufzeichnung. –

+0

wann kann ich Nachrichten von Twitter bekommen? .. weil ich sicher bin, dass sie es nach dem Verbinden senden. –

Verwandte Themen