4

httpヒットを介してデータのストリームが届きます。データをリアルタイムで更新したい。HTTPヒットデータをredispubsubにプッシュし始めました。それをユーザーに見せたいと思います。

redisチャネルでデータを取得したらすぐにユーザーの画面を更新したい。私はルビーを使いたいと思っています。それは私が慣れ親しんでいる言語だからです。

4

2 に答える 2

7

クライアント側で EventSource と組み合わせて Sinatra の「ストリーム」機能を使用します。ただし、IEは除外します。

https://github.com/redis/redis-rb/blob/master/examples/pubsub.rb (別のオプションはhttps://github.com/pietern/hiredis-rb )から取得したほとんど機能するサーバー側のコードです。 :

get '/the_stream', provides: 'text/event-stream' do
  stream :keep_open do |out|
    redis = Redis.new
    redis.subscribe(:channel1, :channel2) do |on|
      on.message do |channel, msg|
        out << "data: #{msg}\n\n" # This is an EventSource message
      end
    end
  end
end

クライアント側。最新のブラウザーのほとんどは、IE を除き、EventSource をサポートしています。

var stream = new EventSource('/the_stream');
stream.onmessage = function(e) {
  alert("I just got this from the server: " + e.data);
}
于 2013-03-03T01:20:19.720 に答える
1

私が知っているように、このリンクFayeをチェックしてこれを行うことができます

カップルアプローチがあります。

  1. Thin と Sinatra を使用してロング ポーリング サーバーを構築し、このようなことを達成したことを今でも覚えています。

  2. 私は、これと、redis に直接接続するために使用できるこのフラッシュ クライアントのようなものをいくつか知ってます

  3. EventMachine Websocket 実装があり、HTML 5 および非 HTML 5 ブラウザー用の Flash で使用および接続できます。

  4. Websocket ラック

他のアプローチ それらのほとんどはルビーで書かれていないので、提案だけを試すことができます

  1. Juggernaut (Redis Pub-sub Thing に基づいているとは思わない

  2. Socket.io

  3. Webd.is

  4. NULLMQ redis pub sub ではありませんが、これは JavaScript での Zero MQ 実装です

あなたがグーグルアップした場合に見つけることができる他のアプローチはほとんどありません:)

この助けを願っています

于 2013-03-03T05:23:31.713 に答える