サイトがあり、strophe.jsライブラリとejabberdXMPPサーバーを使用してそのためのチャットシステムを開発しました。PHPで開始されたセッション添付ファイルを使用します(社内ライブラリを使用)。PHPスクリプトからRIDとSIDを取得し、stropheのセッション添付ファイルを使用します。上記のRIDとSIDはCookieに保存され、CookieのRID値は、strophe.jsのRIDが更新されるたびに更新されます。
これは正常に機能します。ログインすると、各連絡先のプレゼンスステータスが表示されます。これに伴う問題は、サイトの別のページに移動し、前述のRID(stropheによって生成された増分値を使用)とSIDを使用して添付すると、サーバーは連絡先のプレゼンス情報を送信しなくなります。ログインしたとき。これにより、連絡先領域はオンラインであってもすべて非表示になりました。それらは、あなた(またはあなたの連絡先)がチャットからログアウトしてから再度ログインした場合にのみオンラインで表示されます(XMPPサーバーからプレゼンスの更新を受信するため)。
サーバーからプレゼンスを受信したときに、連絡先のプレゼンスステータスがCookieに保存される(すべてのオンライン連絡先のJIDがCookieに保存される)回避策を作成しました。これはページが読み込まれるたびにチェックされ、Cookieが設定されている場合は読み取られ、Cookie上のすべてのJIDがオンラインとしてマークされます。これは正常に機能していますが、XMPPのデフォルトの動作を使用して、これを解決するためのより良い方法がいくつかある可能性があります。