cometd bayeux:在页面卸载时正确处理用户断开连接

发布于 2024-09-27 16:50:34 字数 471 浏览 5 评论 0原文

当前设置:带有 jQ​​uery cometd 插件的 cometD servlet。

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

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

});

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

我能想到的唯一解决方案是使用 setInterval,其中每隔 1 分钟,管理员将循环访问一组已连接的用户,然后“ping”它们以检查它们是否仍然连接。

有什么想法吗?我应该使用 setInterval 轮询技术吗?

Current setup: cometD servlet with jQuery cometd plugin.

Let's say i have a simple chat room that currently has 2 users (userA and userB) connected to it. When userB navigates away from the page, I need userA to be notified that userB has left the room. Is there a way to let userA know that userB left without using the unload handler?

$(window).unload(function(){
/** lets notify other users that currentUserId left **/

});

After conducting lots of tests; the above code block is not reliable.

The only solution i can think of is using a setInterval where every 1 minute, the admin will loop through an array of connected user, then "pings" them to check whether or not they're still connected.

Any ideas? Should i use the setInterval polling technique?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

り繁华旳梦境 2024-10-04 16:50:34

对于这个有兴趣的人。

当服务器使用户会话过期时,您可以注册“removeListener”方法。

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

完整代码示例:
ChatService.java#handleMembership

For this who are interested.

You can register a "removeListener" method when a server expires a user's session.

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

Full code example:
ChatService.java#handleMembership

听不够的曲调 2024-10-04 16:50:34

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

Yes I know this question is old, but why not simply using the PresenceListener?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文