0

現在のセットアップ: jQuery cometd プラグインを使用した cometD サーブレット。

現在 2 人のユーザー (userA と userB) が接続している単純なチャット ルームがあるとします。userB がページから離れたときに、userB が部屋を出たことを userA に通知する必要があります。userB がハンドラーを使用せずに去ったことを userA に知らせる方法はありunloadますか?

$(window).unload(function(){
/** currentUserId が離れたことを他のユーザーに通知できます **/

});

多くのテストを実施した後; 上記のコード ブロックは信頼できません。

私が考えることができる唯一の解決策は、管理者が1分ごとに接続されたユーザーの配列をループし、それらがまだ接続されているかどうかを確認するためにそれらを「ping」する setInterval を使用することです。

何か案は?setInterval ポーリング手法を使用する必要がありますか?

4

2 に答える 2

2

興味のある方のために。

サーバーがユーザーのセッションを期限切れにしたときに、「removeListener」メソッドを登録できます。

    client.addListener(new ServerSession.RemoveListener() {
        public void removed(ServerSession session, boolean timeout){
            members.values().remove(session.getId());
            broadcastMembers(members.keySet());
        }
    });

完全なコード例: ChatService.java#handleMembership

于 2011-02-18T19:28:46.083 に答える