プロが教える店舗&オフィスのセキュリティ対策術

C++自体は割りとやってますが、マルチスレッド、通信、JavaScriptは初心者からの質問させて頂きます。

うまく伝わるかどうか心配なのですが、
要は以下のような処理イメージです。
--
ブラウザ上で、[開始]ボタンを押したら、サーバー上で処理1が実行されます。
その後、ブラウザ上では「処理1実行中」と表示されます。
その間、更にもう一度[開始]ボタンを押すと、サーバ上で処理1と同じ処理が処理2として実行されます。
処理1、処理2それぞれ処理が終わると、終わったものからブラウザ上に「完了」と表示されます。
--
伝わりますでしょうか?
このような処理で、特に分からないポイントがあります。
サーバで処理を実行開始した時点で、一度ブラウザに応答しておいて、処理を返し、処理が終了した時点で再度ブラウザに完了を通知する方法です。

ブラウザから処理されるアプリはサーバアプリ一つだと思うし、そこからマルチスレッドでは?と考えると、終わるまで処理を返せないのかなと。。。
(アホな文章になってそう。。。)

図にすると以下のようになるでしょうか?
ブラウザ - サーバアプリ間はJavaScript
サーバアプリ - 処理1(処理2)はC++です。
サーバアプリと処理1(処理2)は同じExe内でできるのならそれでも可です。

--
ユーザー(ブラウザ)
   ↓ ↑
サーバアプリ(C/C++)
 ↓  ↓  ↓
処理1 処理2 処理3(C/C++)

なるべく定期的に監視するようなタイマーとか使わないで実現可能にしたいです。
どなたかアドバイスお願いします!!

A 回答 (1件)

概念的にはCometみたいなことをやりたいということでしょうか?


http://www.atmarkit.co.jp/fjava/rensai4/safetomc …

上記例ではサーバをTOMCAT&Javaで実現していますが、サーバを自前で実装しているのならアイディアを流用することは可能だと思います。

サーバアプリはaccept後、要求処理を行うスレッドを起動し処理が終了したら実行結果をHTTP RESPONSEにして返答します。

クライアント側はボタンが押されたら「実行中」という表示に変更した後に、JavaScriptのHttpRequestを利用してサーバに対して処理の実行を要求します。
HttpResponseで結果が返ってきたら内容を利用して完了告知を行います。
JavaScriptのHttpRequestを利用することにより、ページ遷移を伴わずに処理の終了をクライアントに通知することができます。

サーバ側のプログラムの組み方については、開発環境や実装方針によって大きく変わる(Apatchを利用するのか、自前で組むのか、Windowsなのか、UNIX系なのかなどによって異なる)ので、ここでは省略させてもらいます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/02/03 22:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!