您如何将 XMPP 绑定会话镜像到多个选项卡或窗口,例如 facebook、okCupid 等
Posted
技术标签:
【中文标题】您如何将 XMPP 绑定会话镜像到多个选项卡或窗口,例如 facebook、okCupid 等【英文标题】:How would you mirror XMPP bind sessions to multiple tabs or windows a la facebook, okCupid etc 【发布时间】:2010-07-15 16:15:57 【问题描述】:我已经使用 http 绑定和 ejabberd 实现了基于 Web 的即时消息/聊天功能。对于懒惰的人,这是我的问题的简短版本:
您将如何实现一个基于 Web 的 XMPP 聊天客户端,该客户端可以同时显示在多个浏览器窗口中,每个窗口都显示打开聊天的相同视图?
为关心的人提供更详细的漫谈:
一个潜在的解决方案是让每个标签管理它自己的连接。 XMPP 对多个客户端有足够的支持,所以让它来做路由。我对此解决方案至少有两个问题。 1 是这会导致带宽消耗的明显增加。 2是目前ejabberd中不支持多个具有相同JID的客户端连接到MUC房间。这显然会在 3.1 中实现,但这对我来说是一个主要问题。
最初我想知道是否可能涉及一些闪光魔法,但似乎页面上的 swf 仅用于播放通知声音效果。您可以通过使用 firebug 或类似方法删除嵌入标签来确认这一点。聊天功能仍然有效。
这基本上让我将 cookie 作为选项卡之间共享的唯一方式。在这种情况下,主选项卡会将所有消息转储到可以从其他选项卡轮询的 cookie 中。这对我来说似乎很荒谬,因为轮询频率必须非常高才能避免任何延迟。当“主”窗口关闭时会发生什么?
我已经看到不止一个网站这样做了,通常当我看到这样的问题时,我至少可以模糊地理解我将如何去做,但我不介意承认这个让我难住了。
【问题讨论】:
我以前做过这样的事情,但我不确定我是否理解你的问题。您的意思是具有完全相同的聊天的不同浏览器标签? 是的,我们的用户可能同时打开了多个标签或窗口,我希望他们能够从任何标签/窗口监控他们打开的聊天。 【参考方案1】:所以我在 facebook 聊天中闲逛了一些,似乎他们只是让每个标签管理它自己的连接。 Ejabberd 为我在 MUC 房间中实现这一目标设置了几个障碍,所以我想这就是为什么我最初倾向于不考虑这个解决方案的原因。我认为对于其他感兴趣的人来说,私人消息应该更直接。
多个MUC实例的问题是https://support.process-one.net/browse/EJAB-305
我想我必须为修补 ejabberd 提供一个案例。如果有人有任何其他意见,我很想听听。
【讨论】:
以上是关于您如何将 XMPP 绑定会话镜像到多个选项卡或窗口,例如 facebook、okCupid 等的主要内容,如果未能解决你的问题,请参考以下文章