3

EventMachine + em-http-request を使用して Twitter ストリーミング API をリクエストしています。それは完全に機能しますが、エラープルーフを取得したいと思います。

接続が停止していることを検出する最良の方法は何ですか? (自動再接続を試みるため)。

一時的な解決策があります。ストリーム メソッドから新しいチャンクを受け取るたびに、現在のタイムスタンプを保存します。PeriodicTimer はこのタイムスタンプをチェックしており、last-timestamp が 30 秒を超えている場合は常に再接続を発行します。このソリューションの問題点は、停止した接続とコンテンツのない動作中の接続に違いがないことです。

ご協力いただきありがとうございます。

4

1 に答える 1

3

リクエストオブジェクトにコールバックをアタッチできerrbackます。

http.errback { puts 'error or timeout' }

em-http-request wikiから:

Errback関数は、タイムアウトやDNSホスト名の不良などの接続に失敗した場合にのみ呼び出されます。

個人的には、生のem-http-requestライブラリを使用するよりもFaradayを使用する方が好きです。

require 'faraday'

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

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

これがファラデーのチュートリアルです。また、TwitterストリーミングAPIを使用している場合は、注意が必要です。幸運を!

于 2012-07-18T17:01:44.343 に答える