を
ユーザーのセッションの有効期限が切れているかどうかを確認する方法がある場合は、
はい!セッションのサーバー側コンポーネントをどのように格納しているかによって異なります。従来のセッションでは、クライアント側(クッキーなど)とサーバー側でユーザーを覚えておくために、2つの部分が正しく機能することが必要であることを覚えておいてください。セイルズでは、サーバー側の部分がSession Config Fileのadapter
部分に指定されたデータストアに格納されます。このデータストアを照会して(デフォルトのメモリストアであっても)、期限切れのセッションを持つすべてのユーザーを探すことができます。より深く行く
...
ユーザーセッションの有効期限が切れたときに呼び出される具体的な方法があれば、あなたが求めている場合は、その後、いや、それはセッションの働き方ではありません。セッションは、HTTPをステートフルにする「ハック」です。彼らは死んでも私たちに通知される方法で活発なものではありません。セッションは、長いコードと日付を持つレコード(おそらくデータベース)です。ユーザーがサイトにアクセスすると、Cookieからコードを取得し、セッションデータベースのレコードを確認します。レコードが一致し、期限切れになっていない場合、HURRAY!彼らは誰であるかを知っており、彼らは依頼を続けます。レコードが一致しないか、期限切れになった場合、BOO!は再度ログインを促します。
は本当に私はあなたが誰かが「アクティブ」ユーザーを追跡するためにログインしているかどうかを監視しようと探している最後の文から推測
...今の結論にジャンプします。私はセッションがそれの貧弱な指標であることを示唆しています。セッションでは、あなたのサイトにログインしてから離れることができます。セッションの有効期限の長さ(24時間または30日は典型的な値です)に応じて、その時間全体でログインしているように表示されます。それは本当に役に立つ指標ですか?私はあなたのサイトを使っていませんが、あなたは私を「ログイン」しているように見せています。さらに、私は別のデバイス(電話や別のブラウザ)に戻ってきて、再びログインする必要があります。今は2つ以上のセッションがあります。どちらが正しいか?
アクティブな使用量を測定しようとしている場合は、WebSocket(誰かがあなたのページに接続/切断された時を正確に教えてくれるでしょうか?read more here)、または "ハートビート"訪問したページのいずれかを訪問すると、last seen at
と記録されます。これは、誰がサイトに積極的にいるのか、たとえば1時間以上何もしていない人について、おおまかな目安となります。
私は時間をかけてオプションを分析しました。 WebSocketは接続/切断を通知することができますが、問題はどのように(リンクをクリックするなどしても)ユーザーがページに参加して放棄した場合に発生します。私は1分ごとにサーバーにping(単純なajax要求を使用)することにしました。最後のpingとのサーバーの時間差が5分を超えると、ユーザーはオフラインとみなされます。あなたの詳細な答えをありがとう。 – dovahkiin
あなたはまさに正しいです。大きなシンプルなソリューション@dovankiin。 WebソケットソリューションはAngularのような豊富なjavascript webappでうまく動作し、ユーザーが同じ「ページ」にいることが期待できるので、セッションソケットを維持できます。 – mwielbut