6

ご存知の方もいらっしゃると思いますが、Facebook はこの種の「システム」を使用しており、非アクティブまたはリモート セッション クローズによってユーザー セッションが失われたときにポップアップが表示されます。私はすでにこのNode.js の質問を見て読みましたが、何も見つかりませんでした。

私はカナダのコンピューター ビジネスで働いています。当社の主な製品は CRM であり、すべてが Classic ASP を使用してコーディングされています。

知っている。

Web ベースのアプリケーション全体がうまく機能しており、サーバーでサイトをホストしているため、必要に応じてポートを開いてソケットを使用することができます。

主な質問は次のとおりです。たとえば、セッションが期限切れになったとき、またはサーバーのリセットが原因で単に失われたときに、クライアント側のイベントをトリガーする方法はありますか (javascript ライブラリまたは jQuery プラグインを使用しますか?)。

もちろん、AJAX リクエストを毎秒送信してユーザー セッションがまだ存在するかどうかを検証するのではなく、別のソリューションを使用することをお勧めします。それが役立つ場合、同時に接続するユーザーは最大で約 3,500 人であり、当社のサーバーはより多くのトラフィックを簡単に処理できます。サーバーは、IIS 7 と共に Windows Server 2008 で動作しています。

残念ながら、デバッグするものが何もないため、この質問のコード ブロックやスクリーンショットを提供することはできません。

1 つのアイデアは、何も返さず、そこでハングするファイルに AJAX 要求を使用することです。セッションが失われた場合 (非アクティブまたはサーバーのリセット)、AJAX 要求はエラーをトリガーし、「エラー」関数がトリガーされます。それは考慮すべきことでしょうか?

または、他の提案はありますか?

4

4 に答える 4

3

これを行う 1 つの方法は、クライアント側のタイマー セットをセッションの有効期限と同じ時間に設定することです。

セッションが 20 分後に期限切れになるように設定されているとします。ページが読み込まれると、20分に設定されたクライアント側のタイマーが作動します。ユーザーがサーバーとのやり取り(フォームの送信など)を行うと、タイマーがリセットされます。ただし、この 20 分間に何も起こらない場合は、タイマーがカウントダウンし、イベントが発生します。

于 2013-08-08T17:47:56.657 に答える
1

私が理解している限り、主な問題は、ユーザーが膨大なフォームに記入しなければならないことです。これには時間がかかり、その間にセッションが期限切れになる可能性があります。

さらに、ユーザーがフォームに入力している間に、セッションが他の何か (iisreset など) によって終了される可能性があります。

私の理解では、セッションが失われた/期限切れになった/終了した/放棄されたことをクライアントに通知する必要はありません。ユーザーがフォームを送信するとき、または次のリクエスト(前述のAjaxによる)がクライアントによって行われたときに、ログインフォーム(Ajaxなど)を表示するだけで十分です。

呼び出された asp スクリプトは、セッションが有効かどうかをチェックし、そうでない場合はポップアップまたはオーバーレイが表示され、最初に Ajax によってユーザーにログインし、その後フォームが送信されます。

HTTP ステータス コード 401 またはクライアントに送り返す何かを考えることができ、クライアントは前述の Ajax ログイン フォームを表示します...

于 2013-08-15T06:57:57.587 に答える