1

私はユーザーステータスシステムを作りたいのですが、データベースにdatetimeフィールドがlast_activeあり、そのフィールドを現在の時刻でajaxで自動的に更新することを考えていました。

次に、現在時刻との間の分数を確認last_activeして、ユーザーがオンライン、非アクティブ、オフラインのいずれであるかを確認します。

これは良いテクニックですか?たとえば、ユーザーがサイトを開いているのに別のことをしている場合はどうなるでしょうか。

ユーザーがページを表示している場合にのみ ajax リクエストを起動する方法はありますか?

4

2 に答える 2

2

あなたの現在の方法は良いテクニックであり、進むべき道は

jqueryを使用しfocusinfocusout機能し、ユーザーが現在ドキュメントでアクティブであるかどうかを確認できます。

$(document).ready(function(){
    $([window, document]).focusin(function(){
      // start the ajax requests
    }).focusout(function(){
      // stop the ajax requests
    });
});

truein focusinfunctionに設定されfalse、 infunctionに設定される変数を取得する必要がありfocusoutます。これで、continues ajaxリクエスト関数は、変数がに設定されている場合にのみ起動しtrueます。

于 2012-06-17T11:16:57.723 に答える
1

これは、アクティビティをチェックするための非常に良い方法です。ページにフォーカスがある場合にのみAjaxリクエストを起動できます。mousemoveイベントなどの使用を検討しますが、blur/focusイベントも役立つ場合があります。

mousemoveイベントが発生しtrueたら、Ajaxリクエストを実行する前に、変数をに設定し、変数を確認してください。false各Ajax呼び出しの間にリセットすることを忘れないでください。

于 2012-06-17T11:12:36.287 に答える