私はユーザーがログインし、すべてのページでNowJSに接続しているサイトを持っています。ほぼリアルタイムでステータス(オンライン/オフライン)を把握できるようにしたいと思いますが、これを実行する最善の方法はわかりません。私の最初の考えはconnectイベントとdisconnectイベントを使うことだけでしたが、新しいページが読み込まれるたびにソケット接続が閉じられているため、ユーザーが新しいページに行くたびに起動されるため、これは機能しません。NowJS/Node.jsを使用してオンライン/オフライン状態をリアルタイムで追跡しますか?
私は切断イベントでそのユーザーのデータベースエントリにタイムスタンプを記録し、接続イベントが発生したときに私は彼らが過去30秒以内にサイトにアクセスしたかどうかをチェックします。もしそうでなければ、私は彼らが新しいセッションを開始していると推測できます。切断イベントでは、setTimeoutを使って30秒後にオンラインになっているかどうかを確認し、そうでない場合はステータスをオフラインに設定します。
これは主に動作しますが、いくらかハッキーに見えますが、いくつかの厄介な問題があります(各ページビューで新しいタイムアウトサーバー側を使用することは問題ありません)。私はちょうど見落としているこれを行うための良い方法はありますか?
新しいページ=新しいソケット接続。各ユーザーの接続を追跡し、別のソケットが開いている場合は切断を無視します。そうだね? –
私は実際にそれを実際に行っていますが、ページが1つしか開いておらず、リンクをクリックしているだけでは、接続が開いていないという問題が残っています。私は現在、すべてのユーザーの接続を、名前としてユーザーIDを持つグループに保管しています。 –