1

最初に、私はこの質問について本当に方向性がないと感じていると言わせてください. 私は Windows 統合セキュリティを使用しており、vb.net を使用して AD からユーザーに関する情報を検索できます。ログオン ID 名を取得することで、MS SQL 2005 サーバーから検索できるユーザーに関するその他の情報もあります。

私がやりたいことは、Web ページをアクティブに表示しているすべてのユーザーに関する情報を、Web ページを表示しているユーザーのいずれかに表示することです。情報は AD と SQL の両方から取得され、問題なく取得できます。

これまでの私のルートでは、ユーザーが最初にページをロードしたときに SQL を使用して保存していました。ユーザーがページを離れたときに表示する方法がわかりません。ajaxタイマーを使用して、ユーザーの訪問のタイムスタンプを1秒ごとに更新しようとしました。これにより、テーブルがトリガーされ、5秒間更新されていないレコードのステータスが非アクティブに変更されます。これは少数のユーザーでのみ機能しますが、ページを閲覧する人が数人を超える場合、1 秒の更新は信頼できないことがわかります。ユーザーがページを最小化するときにも問題があるようです。これにより、ajax タイマーからの更新が停止し、ページを表示しているユーザーがリストから除外されることがあります。

この機能は、サイトの機能にとって重要ではないため、1 年以上前にあきらめていました。それ以来、これを機能させる方法が見つからないのは本当に苦痛でした。私の検索は、多くの実りのない道をたどってきたので、たとえそれが正しい方向へのリードにすぎないとしても、提供できる助けに本当に感謝しています.

4

6 に答える 6

2

答えはおそらく、表示に必要な精度によって異なります。サイトを使用している他の人々の感覚をユーザーに与えるだけの場合は、あなたが説明したものに似たものを提案しますが、更新頻度は控えます:

  • ページ要求で、ユーザーをページ (およびタイムスタンプ) に関連付けます。
  • Ajax タイマーを使用して、1 分ごとにタイムスタンプを更新します。
  • window.onbeforeunload イベント (または同様のもの) を介して関連付けを強制終了します。
  • 1 分 (および少し) より古いタイムスタンプは無効であると想定します。

人々がページを離れる方法をいくつか試してみることはできますが、絶対的な証拠ではありません。最小化されたページに関しては、実際にページを表示しているかどうかについては議論の余地があると思います ;)

于 2008-09-18T19:29:13.923 に答える
1

あなたができる最善のことは、「ページにアクセスする」ためのしきい値を設定することだと思います。60、120、300、または指定された時間よりも古いエントリをクリアする秒数ごとに自動化されたタスクを実行します。ユーザーがいつページを離れたかを確実に検出する方法はありません (私は認識しています)。できる最善のことは、一定の時間が経過した場合に、ユーザーがサイトの使用を停止したと「想定」することです。したがって、ユーザー、ページ、および閲覧時間を保存します。視聴時間がしきい値を超えたら、削除します。

于 2008-09-18T19:20:29.887 に答える
1

毎秒 AJAX リクエストを行うのは良い考えではないと思います。

thresholdほとんどの人は、誰かがサイトにリクエストを行い、その時点からユーザーがサイトを「訪問」するまでを記録するだけで、この機能を実装していると思います。thresholdに到達する前にユーザーが別のサーバー要求を行わない場合、ユーザーは移動したと見なされます。

于 2008-09-18T19:21:48.090 に答える
1

サーバーからごくわずかな「ハートビート」データ ストリームをストリーミングする小さなフラッシュ アプリをページに配置するのはどうでしょうか....ストリームがいつドロップされたか、したがってクライアントがいつ移動したかをサーバーが知ることができるようにするのに十分です。ページから。

于 2008-09-18T19:25:52.463 に答える
0

最初の答えは機能します。

しかし...

ユーザーがログインしているとは言わなかったので、それはあなたが見ているものではないと思います。ただし、ログインしているユーザーのリストを1分ごとに要求するだけであれば、確実に単純化できます。

于 2010-01-21T16:28:21.827 に答える
0

本文には onunload スクリプトがあります: < body onunload="userLeftPage()"

そのスクリプトで、ユーザーがページを離れたことを伝える ajax 呼び出しを送信します。

于 2008-09-18T19:21:09.137 に答える