1

私はソケットベースのチャットプロジェクトに取り組んでいます。重複したユーザー名をチェックできるように、すべてのオンライン ユーザーの名前をデータベースに保存しています。チャット中にブラウザを直接閉じると、私のアプリケーションは簡単にユーザーをオフラインにしますが、問題は、その時点でキャッシュメモリを直接クリアすると、データベースからユーザーを削除するための AJAX 呼び出しが呼び出されないことです。したがって、キャッシュをクリアしてオフラインになったとしても、フロント ユーザーにはオンラインで表示されます。つまり、AJAX 呼び出しが発生せず、キャッシュを直接クリアしたため、エントリがデータベースに残っていることを意味します。

したがって、 javascript を使用してキャッシュ クリア イベントをキャッチする方法について何らかのアイデアをお持ちの方は、お知らせください。

この問題について多くのグーグル検索を行いましたが、何も見つかりませんでした。

どんな提案も楽しませてくれます。

事前にt​​hnx.....

4

1 に答える 1

1

あなたが求めていることは不可能です (ユーザーがブラウザーのキャッシュを JavaScript からクリアしたことを検出する方法はありません)。

両方のユーザー間で目に見えない「ping」を頻繁に送信することを検討しましたか (1 分のようなしきい値を選択)、両方のユーザーが (しきい値 + より小さいしきい値) の ping を受信しない場合、他のユーザーがオフラインである (または、より確実に別の "I am still here" ping の要求を送信する)。

于 2012-11-24T04:46:20.607 に答える