0

当前设置:cometD servlet 和 jQuery cometd 插件。

假设我有一个简单的聊天室,目前有 2 个用户(userA 和 userB)连接到它。当用户 B 离开页面时,我需要通知用户 A 用户 B 已离开房间。有没有办法让 userA 知道 userB 在没有使用unload处理程序的情况下离开了?

$(window).unload(function(){
/** 让我们通知其他用户 currentUserId 离开了 **/

});

经过大量的测试;上面的代码块不可靠。

我能想到的唯一解决方案是使用 setInterval ,每隔 1 分钟,管理员将遍历一组连接的用户,然后“ping”他们以检查他们是否仍然连接。

有任何想法吗?我应该使用 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 回答
0

是的,我知道这个问题很老,但为什么不简单地使用 PresenceListener?

于 2013-10-25T10:08:30.600 回答