我正在使用 EventMachine + em-http-request 来请求 Twitter 流 API。它工作得很好,但现在我想得到它的错误证明。
检测连接停止的最佳方法是什么?(为了尝试自动重新连接)。
我有一个临时解决方案:每次从流方法收到一个新块时,我都会保存当前时间戳。PeriodicTimer 正在检查此时间戳,并在最后一个时间戳超过 30 秒时发出重新连接。此解决方案的问题在于,停止连接和没有内容的工作连接没有区别。
谢谢你的帮助。
我正在使用 EventMachine + em-http-request 来请求 Twitter 流 API。它工作得很好,但现在我想得到它的错误证明。
检测连接停止的最佳方法是什么?(为了尝试自动重新连接)。
我有一个临时解决方案:每次从流方法收到一个新块时,我都会保存当前时间戳。PeriodicTimer 正在检查此时间戳,并在最后一个时间戳超过 30 秒时发出重新连接。此解决方案的问题在于,停止连接和没有内容的工作连接没有区别。
谢谢你的帮助。
您可以将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,这里有一个需要注意的问题。祝你好运!