EventMachine/em-http-request 检测 http 流连接何时停止

发布于 2025-01-01 04:49:53 字数 264 浏览 1 评论 0 原文

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

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

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

感谢您的帮助。

I'm using EventMachine + em-http-request to request Twitter streaming API.
It works perfectly, but now I would like to get it error proof.

What would be the best way to detect that the connection is stalled? (in order to try an auto-reconnect).

I have a temporary solution: each time I receive a new chunk from the stream method, I save the current timestamp. A PeriodicTimer is checking this timestamp and issues a reconnection whenever the last-timestamp is more than 30secs old. The issue with this solution is that it makes no difference between a stalled connection and a working connection with no content.

Thanks for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风吹雨成花 2025-01-08 04:49:53

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

http.errback { puts 'error or timeout' }

从 em-http-request wiki

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

就我个人而言,我更喜欢使用 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

这是一个 法拉第教程。如果您正在使用 Twitter Streaming API,这里有一个陷阱留意。祝你好运!

You can attach an errback callback to your request object:

http.errback { puts 'error or timeout' }

From the em-http-request wiki:

Errback function is invoked only in the case of a failed connection such as a timeout or bad DNS hostname.

Personally, I prefer to use Faraday rather than working with the raw em-http-request library:

require 'faraday'

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

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

Here's a tutorial for Faraday. And if you're working with the twitter streaming API, here's a gotcha to watch out for. Good luck!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文