2017-08-14 8 views
0

Webアプリケーションのどこかでユーザーのクリックがサーバーにアクセスしたときと検出しなかったときを検出する方法はありますか?この知識は、アプリケーションに追加したい単純なキープアライブメカニズムに必要です。私はすでにこのポストのヘルプを使用して、ページ内の任意のクリックを検出する機能を実装しました:Click everywhere but here event。そして、クリックがサーバーへのアクセスを引き起こしたときとそうでないときを検出する機能を追加する必要があります(キープアライブで2つ、サーバーセッションで1つ、クライアントセッションで2つのタイマーを使用するため)。
バックエンドはASP.NETコアWeb APIに実装されています。ユーザーのクリックがサーバーに移動したときとAngularJS Webアプリケーションにないときの検出

おかげで、
ashilon

答えて

1

は、私は考えることができる少なくとも侵襲的な解決策は、最後のイベントの時間を追跡するだろう$ HTTPサービスへの要求または応答インターセプターを追加することです。このように見えるかもしれませんが、あなたのanglejsアプリの詳細については明らかに変更する必要があります。

angular.module('yourAppName'). 
    service('SessionInterceptor', 
    ['$q', '$rootScope', 
    function($q, $rootScope) { 
     'use strict'; 

     return { 
      response: function(response) { 
       $rootScope.lastServerActivity = response.headers().date; 
       return response; 
      }, 
      responseError: function(rejection) { 
       $rootScope.lastServerActivity = rejection.headers().date; 
       return $q.reject(rejection); 
      } 
     }; 
    }]); 

次に、あなたは彼らの次のクリックやタイマーを経由してアイドル時間を計算し、適切な場合には、セッションを殺すためにlastServerActivityを使用することができます。応答側ではなく要求側を簡単に実装することもできます。また、httpヘッダーではなく、javascriptを使用して日付を取得することもできます。あなたが選んだものは、クライアントサイドのセッションタイムアウトをどのようにしているかによって影響を受けます。

+0

優れたソリューションtokkov。どうもありがとう。 – ashilon

関連する問題