javascriptからの長いポーリングリクエストを開始したいと思います。私はRuby Progが複数のボディセクションをJavascriptにストリームすることを期待しています。なぜ、次の(疑似)コードは機能しませんか?async sinatraを使用したストリームの複数のボディ
require 'rubygems'
require 'sinatra/async'
require 'eventmachine'
require 'thin'
require 'json'
class Test < Sinatra:Base
register Sinatra::Async
aget '/process' do
for c in 1..10
body {
{ :data => [ "this is part #{c}" ] }.to_json
end
end
end
run!
end
たぶん私は長い間何ポーリングと非同期の誤解を行うことになって、私の期待は、私がクライアントに送り返され、複数の遺体を得るということですか?私はイベントマシンや何かを使う必要がありますか?それはあなたが複数の遺体の送信をトリガーするためにEventMachineイベントを必要とする以下のexampleに表示されます
おかげ
私も今、これに取り組んでいます。私が理解していることから、体は要求書いたストリームを閉じてそれを送ります。 'body 'asdf''を連続して2回呼び出すと、ページにはasdfだけが表示されます。代わりにwrite、またはresponse.writeを使用することを提案した1つのリードが見つかりました。それは私の接続がブラウザでまだ開いているのが分かるので、より良いようです。この問題は、行内の2つの 'write'呼び出しが期待どおりに動作しないことです。 –
** BOUNTY INFO **:私は、A)このアプローチが実現できない理由を説明することができます(つまり、私が疑ういくつかのHTTP仕様のために)。 B)身体に書いてブラウザに表示するコードを入力し、2秒後に本体に書き込んで、この更新をブラウザに表示させる。 誰かがあなたの答えに触れて、報奨金を得ることを望む場合を除き、参照番号または作業コードを提供してください:) –
これに遅れて返答して申し訳ありませんが、私はこの仕事をもう一度(1.5年後)選んでいました。したがって、ここでのユースケースは、たとえば、Webページを介してトリガされたFTP操作を行っていたとします。このウェブページでは、基本的にリアルタイムでアップロードされたバイトを取得したいと思っていました。コマンドラインに出力を示すnetftpを使った例がたくさんあります。しかし、あなたのコードはウェブページ経由でどのようにできるかを示していると思います。私はまた、Sinatraとは対照的にRamaze経由でそれをしたいと思っています。 – gurpal2000