3

我正在使用 EventMachine + em-http-request 来请求 Twitter 流 API。它工作得很好,但现在我想得到它的错误证明。

检测连接停止的最佳方法是什么?(为了尝试自动重新连接)。

我有一个临时解决方案:每次从流方法收到一个新块时,我都会保存当前时间戳。PeriodicTimer 正在检查此时间戳,并在最后一个时间戳超过 30 秒时发出重新连接。此解决方案的问题在于,停止连接和没有内容的工作连接没有区别。

谢谢你的帮助。

4

1 回答 1

3

您可以将errback回调附加到您的请求对象:

http.errback { puts 'error or timeout' }

来自 em-http-request wiki

Errback 函数仅在连接失败的情况下被调用,例如超时或错误的 DNS 主机名。

就个人而言,我更喜欢使用 Faraday 而不是使用原始的 em-http-request 库:

require 'faraday'

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

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

这是Faraday 的教程。如果您正在使用 twitter 流 API,这里有一个需要注意的问题。祝你好运!

于 2012-07-18T17:01:44.343 回答