EventMachine / em-http-request Обнаруживает, когда соединение с потоком http остановлено. - PullRequest
3 голосов
/ 31 января 2012

Я использую EventMachine + em-http-request для запроса потокового API Twitter.Это работает отлично, но теперь я хотел бы получить это доказательство ошибки.

Каков был бы лучший способ обнаружить, что соединение остановлено?(чтобы попробовать автоматическое переподключение).

У меня есть временное решение: каждый раз, когда я получаю новый чанк из метода потока, я сохраняю текущую временную метку.PeriodicTimer проверяет эту временную отметку и выдает переподключение всякий раз, когда последняя отметка времени старше 30 секунд.Проблема с этим решением заключается в том, что нет разницы между остановленным соединением и рабочим соединением без содержимого.

Спасибо за вашу помощь.

1 Ответ

3 голосов
/ 18 июля 2012

Вы можете прикрепить обратный вызов errback к вашему объекту запроса:

http.errback { puts 'error or timeout' }

Из em-http-запроса wiki :

Функция Errback вызывается только в случае сбоя соединения, такого как тайм-аут или неправильное имя хоста DNS.

Лично я предпочитаю использовать Фарадей, а не работать с необработанной библиотекой em-http-request:

require 'faraday'

http = Faraday.new do |b|
  b.adapter :em_http
end

res = http.get 'http://whatcodecraves.com'
puts res.body

Вот учебник для Фарадея . И если вы работаете с потоковым API для Twitter, вот что надо знать . Удачи!

...