2017-08-08 7 views
1

私は、webクライアントにactionController :: liveとlinuxコンソールアプリケーションをストリーミングしています。私は無線LAN信号、ダウンロード速度とwpa_supplicantのRuby on rails、複数のクライアントへの単一コンソール出力のストリーム

私はあなたがactioncontrollerのドキュメントで見つけることの基本的な例を使用しているといくつかの認証のようなものを表示するには、私自身の無線LANルータインターフェイスを構築しようとしている

: :クライアントサイドでdivを更新するjqueryのライブと少し。

私のコントローラから私はこのようにしてwifi信号のプログレスバーをシミュレートすることができます。少し数学で

Loop do 
    Response.stream.write(File.read('/proc/net/wireless')) 
End 

簡単

だから... ...プログレスバーの形で無線LAN強度のライブストリームを表示することができ、私はシステムコマンドを実行するまで、問題の多くは、ここではありません。

stream.write(`ping googleDOTcom`.each_line{|line| p line+'<br>') } 

複数のWebクライアントがこのストリームを表示する場合、コントローラが開始すると、複数のプロセス...私はping GOOGLEなどのアプリケーションを起動して、持っている可能性がどのように私はオプションやソリューションを議論したいと考えてい

2の問題...複数のWebクライアントは同じストリームを表示します。また、どのようにすればいいのですか?

あなたのご意見が大変ありがとうございます。

答えて

0

これはコントローラアクションではなく、モデルアクションに変えることを提案します。その後、結果を取得して属性としてデータベースに保存しようとします。

あなたはおそらく、ユーザがpingを行うエンドホストを指定できるようにチェックを一般化することができます。次に、アクティブジョブを調べる必要があります。私はモデルIDに基づいてチェックをインスタンス化し、結果をDBに保存する定期的なインターバルジョブをスケジュールします。ユーザーは、これらの定期チェックの結果を表示するだけです。

これは確かにあなたのサーバーがやっている作業を減らし、あなたのサービスに悩まされている長時間のコマンドを悪用することを防ぐでしょう。

+0

私は昨晩sqliteを使用してサンプルを作成していました。私はpingのテーブルを作成しました(pid、TEXT)。クライアント側でpingから*を選択すると、プロセスがすでに存在するかどうかをチェックし、テキストまたはアプリケーションの各行を表示できます。あなたはモデルアクションを提案しますか?おそらくあなたが持っているかもしれない小さな例ですか?私の心の中では、私はハッキーな解決策しか考え出すことができません。 – BiGMaC

+0

私は、ping_checkのような名前のモデルを作成し、おそらく 'remote'、 'count'、 'results'という属性を作成します。モデルは次のようになります: 'def execute #write execute here end'。次にアクティブなジョブはping_checkインスタンスをとり、 'ping_check_instance.execute'を実行し、結果をモデルに保存します。 – ddubs

関連する問題