私はAjaxチャットから入手したインラインチャットアプリケーションを持っています。これは見事に機能しています。このアプリケーションを使用すると、ユーザーはシステムに登録されているユーザーとチャットできます。すなわち:
次に、ユーザーがオンラインかオフラインかを表示する必要があります。
だから私の質問は、PHPを使用しているオンラインユーザーをどのように表示するのですか?
ありがとうございました
基本的に必要なのは、ユーザーのアクティビティを登録する方法です。
これを行う1つの方法は、PHP内のセッションでこれを行うことであり、これらをログに記録します。ログにアクティビティを登録する方法はたくさんあります。たとえば5分以内にアクティビティが更新されない場合、ユーザーはオフラインです。基本的には、sessionIdとタイムスタンプが必要です(ユーザーIDにハングアップする場合にもこれをお勧めします)。オフラインの場合はuserIdが割り当てられておらず、オンラインの場合はuserIdを追加します。あなたがそれらを持っているなら、それはかなり簡単です。新しいページがロードされたときにそれらを絶えず更新するという問題であり、それらがログアウトした場合は、単にセッションを破棄するか、ユーザーにリンクされないように更新します。
それは最良のシステムではないかもしれませんが、それは機能し、あなたを助けるかもしれません。
私はあなたの特定のニーズを知りません。私が間違っているなら、私を許してください。
JabberサポートがAjaxChatで利用できる場合は、自分でホイールを再発明するのではなく、ejabberdの種類のXMPPサーバーを試してみませんか。また、拡張モジュールもサポートしているため、ApacheVysperもご覧いただけます。XMPPサーバーが存在する場合、ユーザーのプレゼンス処理とメッセージ転送は簡単なものになります。
必要なのは、データベース内のテーブルを絶えず更新して、ユーザーの最後の変更を保存し、日時を保存することです。そのため、その日付が5分または10分を超える場合、ユーザーはオフになります。 ajaxでそれ...
私がすることは、クライアントがajax呼び出しを実行して、データベース内のエントリを最後に表示されたタイムスタンプで更新するために実行するスクリプトを用意することです。あまり頻繁ではありません。そうしないと、サーバーが過負荷になります。
キーストローク、マウスの動きをチェックするifステートメントをいくつか配置することもできます。また、本当に技術を習得してアウェイステータスを実行したい場合は、ウィンドウがアクティブであるかどうかを確認できます。
次に、アクティブなチャットで、アクティブなメッセージのタイムスタンプを確認するか、ユーザーリストが開いているときに確認します。許容範囲外のものは、ユーザーをオフラインとして表示します。5分は私にはかなり長いようです。たぶん10秒ごとにチェックをポーリングしますか?