- 締切済み
サーバー上のデータ変更をすぐに適用するには?
カテゴリ選びに悩みましたが、Flash・Perl・CGIを複合させているのでプログラミング(その他)の質問として投稿させていただきます。 Flashでチャットを作っています。 Flashで入力されたテキストをCGIに送信し、Perlプログラムを実行した後にデータを出力、それをFlashで受け取ることによってページ変移を行なうことなく通信をしているのですが、この場合データ送信の命令を受けてデータの更新がサーバー上で行なわれます。 これを、他の人の発言が更新された時リアルタイムに変更を適用させたいのですが、うまくいきません。ためしにサーバー上のテキストを読み込むプログラムを作り、テキストのほうに変更を加えてみましたが、Flashでは適用されません。新しいウィンドウを開いたら適用されました。ローカル上ではすぐに適用されます。 このように、サーバー上のデータ変更をすぐに適用させるにはどうすれば良いのでしょうか?書き込みを検地して更新を行なうという点はメッセンジャーのようなものと思っていただければ分かりやすいと思います。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
いわゆる,チャットのリロードでしょう。 >> サーバー上のデータ変更をすぐに適用させる >> にはどうすれば良いのでしょうか? 普通は,"すぐ(瞬時)に" は適用させませんよね。 "すぐに" 適用させようとすると,めまぐるしいリロードをしなくてはならなくなり, 表示をしている暇がありません。 だから,チャットの場合, リロード時間を例えば 10 秒 とかに設定しておいて(ユーザーが 5,10,30秒のように選択指定できる場合もあります), そのリロード時間ごとにリロードさせるのが一般的だと思います。 どういうプログラムで Flash に データ をロードさせているのかわかrませんが, Flash の場合も,リロード時間を設定して置いて, その設定時間ごとにデータをロードし直すのが普通だと思います。 設定時間ごとに何か動作をさせる方法も,色々ありますが, 書かれているような場合だと setInterval 関数を使うのが一般的な気がします。 だいたいの形↓ /////////////////////////////////////// // ユーザー定義関数 myfunction の定義 function myfunction() { // ←ココにデータのロード処理 } // 10000ミリ秒(10秒)ごとに myfunction を実行 myID = setInterval(myfunction, 10000); /////////////////////////////////////// 「タイマー処理を使って処理を繰り返す」 http://itpro.nikkeibp.co.jp/article/COLUMN/20060217/229658/ Flashドキュメンテーション 「setInterval 関数」 http://livedocs.macromedia.com/flash/8_jp/main/00001766.html