2010-12-16 7 views
1

私は小さなWebベースのIMクライアントを作成していますが、うまくいきますが、いくつかの問題があります。プロトタイプJavaScript Ajax FIFOキュー

システムはPHPとJavaScriptで書かれており、各ページに置かれる認証IDを使用します.AJAX要求が行われると、この認証IDを含める必要があります。完璧なシステムではありませんが、私はそれを変更する能力はありません。

IMシステムは、定期的な実行者(Prototypeライブラリー)を使用して、それが作る2つの定期的な呼び出しがありますされています。このdoesntの変更は非常に頻繁にそれが30秒ごとかそこら に更新されますので、

  1. 更新の連絡先リストは、
  2. 新しいメッセージをチェックしてください、これは今のところ5秒後に起こります。 、

    定期executorが連絡先リストを更新するために呼び出しを行う、PHP側は、その要求をピックアップ認証IDを確認し、タスクを実行する認証IDを使用して、新しいリスト内を返す:

問題があります後続のリクエストで使用される新しい認証IDとともにJSON形式

最初の関数が返される前に新しいメッセージ(timed)のチェックまたはメッセージの送信(timed)が発生した場合、認証IDはまだ更新されていません。したがって、以前の要求と同じ認証IDを使用します。その認証IDはシステムのPHP側で拒否されます。

リクエストをFIFOスタイルのキューにシリアル化する方法を探しています。これは、メッセージの確認、連絡先の確認、メッセージの送信などのAjaxリクエストをキューにプッシュしてすぐに実行できることを意味します。以前のajax呼び出しが完了しました(100%完了して返されました)

答えて

1

リクエストキュークラスを作成し、これを使用してajaxリクエストを処理することをお勧めします。私はあなたがグーグルですでに作られたものを見つけることができると確信していますが、ここで私はそれがあなたのために働くべきで見つかったものです:

http://positionabsolute.net/blog/2007/04/ajax-request-queue.php

あなたはすべてのあなたのAjaxがその新しい機能を使用するために呼び出しを交換する必要がありますが、クラスを変更しますあなたの問題を解決するはずです。

関連する問題