1

我已经使用 http 绑定和 ejabberd 实现了基于 Web 的即时消息/聊天功能。对于懒惰的人,这是我的问题的简短版本:

您将如何实现一个基于 Web 的 XMPP 聊天客户端,它可以同时显示在多个浏览器窗口中,每个窗口都显示打开聊天的相同视图?

对于那些关心的人,更详细的漫谈:

一种可能的解决方案是让每个选项卡管理它自己的连接。XMPP 对多个客户端有足够的支持,所以让它来做路由。我对此解决方案至少有两个问题。1 是这会导致带宽消耗的明显增加。2是目前ejabberd中不支持多个具有相同JID的客户端连接到MUC房间。这显然将在 3.1 中实现,但就目前而言,这对我来说是一个主要问题。

最初我想知道是否可能涉及一些闪光魔法,但似乎页面上的 swf 仅用于播放通知声音效果。您可以通过使用 firebug 或类似方法删除嵌入标签来确认这一点。聊天功能仍然有效。

这基本上让我将 cookie 作为在选项卡之间共享的唯一方式。在这种情况下,主选项卡会将所有消息转储到可以从其他选项卡轮询的 cookie 中。这对我来说似乎很荒谬,因为轮询频率必须非常高才能避免任何延迟。当“主”窗口关闭时会发生什么?

我已经看到不止一个站点这样做了,通常当我查看此类问题时,我至少可以模糊地理解我将如何处理它,但我不介意承认这个让我难过。

4

1 回答 1

0

所以我在 facebook 聊天中闲逛了一些,似乎他们只是让每个标签管理它自己的连接。Ejabberd 为我在 MUC 房间中实现这一目标设置了几个障碍,所以我想这就是为什么我最初倾向于不考虑这个解决方案的原因。我认为对于其他感兴趣的人来说,私人消息传递应该更直接。

多个 MUC 实例的问题是https://support.process-one.net/browse/EJAB-305

我想我必须为修补 ejabberd 提供一个案例。如果有人有任何其他意见,我很想听听。

于 2010-07-19T08:01:39.293 回答