我已经使用 http 绑定和 ejabberd 实现了基于 Web 的即时消息/聊天功能。对于懒惰的人,这是我的问题的简短版本:
您将如何实现一个基于 Web 的 XMPP 聊天客户端,它可以同时显示在多个浏览器窗口中,每个窗口都显示打开聊天的相同视图?
对于那些关心的人,更详细的漫谈:
一种可能的解决方案是让每个选项卡管理它自己的连接。XMPP 对多个客户端有足够的支持,所以让它来做路由。我对此解决方案至少有两个问题。1 是这会导致带宽消耗的明显增加。2是目前ejabberd中不支持多个具有相同JID的客户端连接到MUC房间。这显然将在 3.1 中实现,但就目前而言,这对我来说是一个主要问题。
最初我想知道是否可能涉及一些闪光魔法,但似乎页面上的 swf 仅用于播放通知声音效果。您可以通过使用 firebug 或类似方法删除嵌入标签来确认这一点。聊天功能仍然有效。
这基本上让我将 cookie 作为在选项卡之间共享的唯一方式。在这种情况下,主选项卡会将所有消息转储到可以从其他选项卡轮询的 cookie 中。这对我来说似乎很荒谬,因为轮询频率必须非常高才能避免任何延迟。当“主”窗口关闭时会发生什么?
我已经看到不止一个站点这样做了,通常当我查看此类问题时,我至少可以模糊地理解我将如何处理它,但我不介意承认这个让我难过。