2016-05-20 12 views
0

私はコードイグナイタで作られたWebアプリケーションを持っています。何それは基本的にないことである - ユーザーがタイマーベースのタスクそのうちの1つは、さまざまなタスクを行うことができるアプリケーション JavaScriptタイマーが動作している場合にセッションタイムアウトを防止する

  • にで

    1. ログインします。
    2. タイマーの実行中に特定のタスクを実行し、完了するとタイマーを停止します。タイマーは数分から数時間実行されることがあります。

    私の質問 - JavaScriptタイマーが実行されている間、セッションタイムアウトを防ぐことができるので、ユーザーはログアウトせずに進行状況が失われませんか?私の最初の考えは、Javascriptタイマー(クライアント)とセッションタイムアウト(サーバー)を扱っているので、少なくとも簡単な方法はありません。タイマーセッションを通じて事前

  • +0

    あなたはクライアント側から 'poll'をやっていますか? – Rayon

    +0

    タイマーが立ち上がっている間にサーバーをポーリングしてセッションを維持します – anu

    +0

    @Rayon、その患者には何らかの障害があります。たとえば、私はあまりにも頻繁に目を点滅させる習慣があり、これをやめたいと思います。このために私はタイマーを動かし、できる限り私の目を点滅させないようにしています。私が点滅すると、私はタイマーを止め、合計分を記録します。次回はこの点滅をさらに抑えようとしています。 – WatsMyName

    答えて

    3

    おかげでキープアライブ要求ごとにいくつかの分(好ましくは2〜5分)

    このキープアライブ要求はなりを送り続けるできるだけ光としてだけでセッションを取得しますサーバーと応答は、セッションのようなものは、まだ事のアクティブ一種であるほど簡単になります

    生き、それを維持します...

    一方で、あなたもJ上の変数を維持することができavascript側のusersLastActivityは、各ドキュメントのmousemoveまたはドキュメントkeydownといくつかのイベントで更新されます。最後のリクエストからアクティビティがあった場合は、キープアライブリクエストを送信してください。

    他の同種の質問を見るには、hereを参照してください。

    基本的な例:

    setInterval(function(){ 
        $.get('/ImStillAlive.action'); 
    }, 300000); // 5 mins * 60 * 1000 
    

    に活動を入力するための基本的なチェック付:

    $(function(){ 
        var lastUpdate = 0; 
        var checkInterval = setInterval(function(){ 
         if(new Date().getTime() - lastUpdate > 300000){ 
          clearInterval(checkInterval); 
         }else{ 
          $.get('/ImStillAlive.action'); 
         } 
        }, 300000); // 5 mins * 60 * 1000 
    
        $(document).keydown(function(){ 
         lastUpdate = new Date().getTime(); 
        }); 
    }); 
    
    関連する問題