マルチなサーバ処理をリアルタイムにブラウザに返す方法

このQ&Aのポイント
  • マルチスレッド、通信、JavaScriptが初心者からの質問です。
  • ブラウザ上で開始ボタンを押すと、サーバで処理1が実行されます。その間にもう一度開始ボタンを押すと、処理2が実行されます。処理が終わると、ブラウザに完了が表示されます。
  • ブラウザとサーバアプリはJavaScriptで通信し、サーバアプリはC++で処理を行います。定期的な監視は使用せずに実現したいです。
回答を見る
  • ベストアンサー

マルチスレッド絡み?マルチなサーバ処理をリアルタイムにブラウザに返す方法が…

C++自体は割りとやってますが、マルチスレッド、通信、JavaScriptは初心者からの質問させて頂きます。 うまく伝わるかどうか心配なのですが、 要は以下のような処理イメージです。 -- ブラウザ上で、[開始]ボタンを押したら、サーバー上で処理1が実行されます。 その後、ブラウザ上では「処理1実行中」と表示されます。 その間、更にもう一度[開始]ボタンを押すと、サーバ上で処理1と同じ処理が処理2として実行されます。 処理1、処理2それぞれ処理が終わると、終わったものからブラウザ上に「完了」と表示されます。 -- 伝わりますでしょうか? このような処理で、特に分からないポイントがあります。 サーバで処理を実行開始した時点で、一度ブラウザに応答しておいて、処理を返し、処理が終了した時点で再度ブラウザに完了を通知する方法です。 ブラウザから処理されるアプリはサーバアプリ一つだと思うし、そこからマルチスレッドでは?と考えると、終わるまで処理を返せないのかなと。。。 (アホな文章になってそう。。。) 図にすると以下のようになるでしょうか? ブラウザ - サーバアプリ間はJavaScript サーバアプリ - 処理1(処理2)はC++です。 サーバアプリと処理1(処理2)は同じExe内でできるのならそれでも可です。 -- ユーザー(ブラウザ)    ↓ ↑ サーバアプリ(C/C++)  ↓  ↓  ↓ 処理1 処理2 処理3(C/C++) なるべく定期的に監視するようなタイマーとか使わないで実現可能にしたいです。 どなたかアドバイスお願いします!!

質問者が選んだベストアンサー

  • ベストアンサー
  • i-kujou
  • ベストアンサー率50% (13/26)
回答No.1

概念的にはCometみたいなことをやりたいということでしょうか? http://www.atmarkit.co.jp/fjava/rensai4/safetomcat_03/safetomcat_03_1.html 上記例ではサーバをTOMCAT&Javaで実現していますが、サーバを自前で実装しているのならアイディアを流用することは可能だと思います。 サーバアプリはaccept後、要求処理を行うスレッドを起動し処理が終了したら実行結果をHTTP RESPONSEにして返答します。 クライアント側はボタンが押されたら「実行中」という表示に変更した後に、JavaScriptのHttpRequestを利用してサーバに対して処理の実行を要求します。 HttpResponseで結果が返ってきたら内容を利用して完了告知を行います。 JavaScriptのHttpRequestを利用することにより、ページ遷移を伴わずに処理の終了をクライアントに通知することができます。 サーバ側のプログラムの組み方については、開発環境や実装方針によって大きく変わる(Apatchを利用するのか、自前で組むのか、Windowsなのか、UNIX系なのかなどによって異なる)ので、ここでは省略させてもらいます。

goopon
質問者

お礼

回答ありがとうございます。 Comet情報ありがとうございます。 やりたい事とは少し違うのですが、勉強になります。 私のはRequestに対し、Responseを一度返し、更にResponseをしようとしているようでした。。。それってきっと有り得ないんですよね。 (リダイレクトで更にRequestさせるとかでないと??) もう少し考えてみます。。。

関連するQ&A

  • ブラウザ閉じたらサーバー処理はどうなる?

    ふと気に合ったのですが、例えばブラウザのボタンを押して無限ループをサーバーで起こさせ、その処理中にブラウザを閉じた場合、サーバーで行われている処理はどうなるのでしょうか? ブラウザが閉じられた場合、「もうその処理はいいよ~」みたいなリクエストがサーバーに送られたりしてストップするのでしょうか? 以上、よろしくお願いします。

    • ベストアンサー
    • AJAX
  • Xcodeでマルチスレッドでなく順処理する方法

    こんにちは。 今Xcode4.2.1を使っております。 さて、今処理としてあるアプリ連携を行う処理を作っているのですが、 マルチスレッドでなく 「処理A」→「処理B」→「処理C」 と順に処理をしたいのですが、スレッド化してうまくいきません。 具体的には [self presentModalViewController: controller animated: YES];(処理A) [処理B] [処理C] : と書いた時に、処理Aがスレッドとして動くので、 処理Aが終了しないうちにB、Cがスタートしてしまいます。   1)順に処理をさせたい(マルチスレッド化しない方法)のですが、     どうやったらよいのでしょうか? もしくは   2)Aの処理がおわるまで監視&制御する(排他制御)方法はあるのでしょうか? 素人質問で申し訳ありません。 些細なことでも結構ですので 宜しくお願い致します。

  • C#のマルチスレッド処理について

    C#のWindowsフォームアプリケーションをつくっています。 .Netではマルチスレッド関連の選択肢がたくさんあるようですが、以下のようなユースケースではどんな組み合わせにするのがいいのでしょうか? UIとは別スレッドでネット接続してデータとってきたものをフォームに反映します。UIはブロックして欲しくなくて、ローディング中にはローディング中にアニメーションを表示したりします。 新スレッドを作って、その完了を待つことはできるんですが、その結果をどうフォームに反映するか、というところがよくわかりません。 C#は初心者なのでコード例やリンクをよろしくお願いいたします!

  • サーバーサイドアプリケーションでブラウザでの「検索中」表示

    サーバーサイドのWebアプリケーションでブラウザで例えば「検索」ボタンを押した後に検索結果が表示されるまでの間、ブラウザには「検索中」と表示させて検索が終了した時点で結果を表示する画面に切り替わるという画面遷移のものを見かけます。 これはどのような仕組みなのでしょうか? HTTPの場合、サーバーからクライアント(ブラウザ)へはアクションを起こせないと思いますので、例えば「検索中」を表示しているページにJavaScript等を埋め込んで一定の間隔でサーバーに確認しにいくというようなことをしているのでしょうか?それとも他に方法があるのでしょうか? サンプル等がありましたらお教え頂ければ幸いです。 宜しくお願い致します。

  • Javaのマルチスレッド処理(スレッド数の上限)

    Tomcatを使用したWebアプリを作成しているのですがある処理を マルチスレッドで行う予定でいます。 画面でチェックボックスが100個チェックされたら100個スレッドを作成して それぞれのスレッドが通信を行うイメージです。 ここで以下の疑問があります。 1.一度に作成できるスレッドの数はTomcatがインストールされているOSに依存するのでしょうか。 2.もし100個が上限として101個スレッドを作成した場合、どうなるのでしょうか。 3.100個が上限とした場合、この数は一定でしょうか。何か別の全く関係のない重い処理が   実行されていてCPUに負荷がかかっていたりすると上限が10個になるということはあるので   しょうか。 4.一度に作成できるスレッドが100個とした場合、Tomcatが下記4人のリクエストを同時に処理   したらエラーという認識でよいでしょうか。それとも4人それぞれが100個ずつ(計400個)   スレッドを作成できるということでしょうか。   Aさん・・・30個のチェックボックスをONにして実行   Bさん・・・30個のチェックボックスをONにして実行    Cさん・・・30個のチェックボックスをONにして実行   Dさん・・・30個のチェックボックスをONにして実行 5.また、Javaプログラムで現時点で作成可能なスレッド数を取得することは可能でしょうか。

  • JSPで「処理中」をブラウザに表示

    サーブレット+DB、JSPでプログラムをしています。 以下の質問(CGIが対象です) http://www.okweb.ne.jp/kotaeru.php3?q=173368 と似たようなことを、JSPで行うにはどうしたらよいでしょうか。 サーブレットの処理中(長い処理)に、「処理中」のメッセージを表示して、終了したら完了ページに飛ばしたいのです。 「処理中」の表示はJSPでもJavaScriptでも、サーブレットから直接出力しても構いません。 さらに言えば、サーブレットではfor文で処理を回しているので、「○%完了」などが表示できたら最高です。 よろしくお願いします。

    • ベストアンサー
    • Java
  • サーバーサイドで処理する「JSCRIPT」とは?

    サーバーサイドで処理されるIIS上で動く「JSCRIPT」について教えてください。 (1)HTMLにJAVASCRIPT同様の埋め込みコーディングができるのですか? (2)ASPのようにブラウザ表示時のソースにはコードが見えないようになるのでしょうか? (3)簡単なサンプルがあればお教えください。

  • プログラムからブラウザにJSを実行させる方法

    cやc++などタスクバーに表示されるプログラムから、起動中のブラウザにjavascriptコードを実行させる方法があれば教えてください それとブラウザ単体で動的にjavascriptを実行するには、 ・アドレスバーに打ち込む ・コンソール画面に打ち込む(IE7とかの場合F12押下して出てくるやつ 以外に方法があるのでしょうか? 回答よろしくお願いいたします。

  • javascriptからサーバサイドの処理を呼び出す方法を教えてくださ

    javascriptからサーバサイドの処理を呼び出す方法を教えてください。 VB.NETでWebアプリの開発をしていますが、 テキストボックスに指定の文字数が埋まった時点で、 テキストボックスの値をもとにデータベース検索をさせるようにしたいのですが やり方がよく分かりません。 そもそも自分自身javascriptの知識も乏しく、有識者も回りに居ないため、 実現が可能なのかどうかも判断できないでいます。 ヒントやキーワードのレベルでもかまわないので、どなたか助けていただけないでしょうか。 よろしくお願いいたします。

  • 表示中のブラウザ情報を他のブラウザで処理する。

    表示されているブラウザの情報を、もう一つブラウザを開き処理を行いたい。 (表示中のブラウザのHTMLを、もう一つのブラウザで使用したい) よい方法はありますか。 表示中のブラウザA 処理をしたいブラウザBとします。 ・ブラウザAでは処理を追加することはできず、拡張(アドイン)も使用できない仕様です。ただ表示のみ可能です。(Webサーバには手を加えられません) ・ブラウザBにてブラウザAのHTMLを加工して表示する。 ブラウザBはWebサーバにアクセスさせたくない。 ・クッキーを使うことは避けたい。 ・Tempファイルを作成し操作することは可能。 ・1台のPC上の処理です。 ・Administratorです。 自分でも考え検索もしてみたのですが、専門分野で無いので上手く検索結果も得られません。 お願いします。

    • ベストアンサー
    • HTML

専門家に質問してみよう