Erlang. Асинхронный HTTP-запрос. Как узнать, когда связь разорвана? - PullRequest
5 голосов
/ 07 января 2011

Я делаю асинхронный запрос к какому-либо серверу через erlang http-клиент, используя http:request(get, {Url, []}, [], [{sync, false}, {stream, self}]), где Url - это URL сервера.Все в порядке и данные handle_info получены в gen_server процесса, который вызывает http:request/4.Но я должен получить сообщение, когда соединение разорвано и stream_end сообщение не получено.Использование таймаута для меня неприменимо, так как сервер может долго отвечать.

Можно ли получить сообщение о разрыве соединения в handle_info?Если нет, пожалуйста, предложите способ узнать, когда разрывается соединение?

1 Ответ

6 голосов
/ 08 января 2011

Для более тяжелого снятия HTTP-запросов используйте ibrowse:

https://github.com/cmullaparthi/ibrowse

У него гораздо больше ручек, которые можно крутить и поворачивать для запросов, и он более полон w.r.t. много вещей. Если http / httpc не решит вашу проблему, стоит выяснить, будет ли переход на ibrowse.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...