我们有一个网站,使用 strophe.js 库和 ejabberd XMPP 服务器为其开发了一个聊天系统。我们使用 PHP(使用内部库)进行会话附件的初始化。我们从 PHP 脚本获取 RID 和 SID,然后使用 strophe 的会话附件功能。所述的 RID 和 SID 存储在 cookie 中,并且每次 strophe.js 更新 RID 时,cookie 上的 RID 值也会更新。(这样我们就可以在页面刷新/导航到网站上的其他地方时重复使用 Session ID)
现在我们计划在多个选项卡/窗口中使用它。我观察了 Facebook 的实现,每个选项卡都有一个长轮询请求到特定域名。每个选项卡的域名都不同。例如,第一个选项卡可能是 0.86.channel.facebook.com。第二个选项卡可能是 1.86.channel.facebook.com。据我所知,这是为解决浏览器对某个域名最多只能有两个活动请求的限制。这个多域名解决方案是如何实现的?
接下来是关于聊天会话本身的问题。每个选项卡的聊天会话都应该是不同的,对吧?那么如何像 Facebook 那样将 UI 与每个选项卡同步?我的想法是,针对每个操作,向用户自己的 JID 发送包含与聊天相关的操作完成的消息。例如,打开聊天窗口会发送类似这样的消息:
现在我们计划在多个选项卡/窗口中使用它。我观察了 Facebook 的实现,每个选项卡都有一个长轮询请求到特定域名。每个选项卡的域名都不同。例如,第一个选项卡可能是 0.86.channel.facebook.com。第二个选项卡可能是 1.86.channel.facebook.com。据我所知,这是为解决浏览器对某个域名最多只能有两个活动请求的限制。这个多域名解决方案是如何实现的?
接下来是关于聊天会话本身的问题。每个选项卡的聊天会话都应该是不同的,对吧?那么如何像 Facebook 那样将 UI 与每个选项卡同步?我的想法是,针对每个操作,向用户自己的 JID 发送包含与聊天相关的操作完成的消息。例如,打开聊天窗口会发送类似这样的消息:
<message from="my_own_jid" to="my_own_jid" type="chat">
<body>{"jid-of-contact":"open-chat-box"}</body>
</message>
这将被聊天客户端捕获,并相应地调整用户界面(在这种情况下,为联系人打开聊天框)。
对于这个实现有任何建议/评论吗?
谢谢!