如何在允许用户导航到其他页面的同时使用 strophe 保持聊天会话打开?

Posted

技术标签:

【中文标题】如何在允许用户导航到其他页面的同时使用 strophe 保持聊天会话打开?【英文标题】:How would I keep a chat session open with strophe while still allowing users to navigate to other pages? 【发布时间】:2012-07-31 17:24:53 【问题描述】:

如果这个问题看起来含糊不清,我很抱歉,但这就是我的问题。

在我的网页一侧,我有一个聊天脚本,每次调用该页面时都会执行以下功能。

    连接到我的 BOSH 服务器 根据登录者拉取数据 在侧边栏显示用户名册

我试图通过在侧面保持聊天窗口打开并使用框架概念加载其他数据来节省带宽(也防止用户在每次移动页面时登录/注销),类似于Facebook 是如何做事的。

我知道

history.pushState(,"New Title Goes Here","http://facebook.com/Something");

但我知道肯定还有更多内容。只是有点迷失在哪里开始寻找。 AJAX 我知道是否会在其中发挥重要作用,但我不喜欢一直完全依赖 javascript

感谢您的帮助。

【问题讨论】:

【参考方案1】:

抱歉,这有点晚了,但您可以使用 Strophe's attach function,这样您的 BOSH 会话就不会在页面重新加载之间丢失。

您需要做的是首先,连接并验证您的 XMPP 服务器,然后保存 JID、RID 和 SID,当您的页面刷新时它不会丢失。例如,在您的会话或 cookie 中。

var conn = new Strophe.Connection('your_bosh_url');
conn.attach(your_jid, your_sid, your_rid, function(status)
  if(status === Strophe.Status.ATTACHED)
  *and so on ...*

【讨论】:

【参考方案2】:

有一个内容 div 和一个聊天 div。我的网站使用 AJAX 只是为了好看,所以我有一个导航 div 和一个内容 div,我用 jQuery 加载东西。看看我的网站:http://derek.genevievehoward.com/ 和这个 JSFiddle http://jsfiddle.net/howderek/tNVd8/

出于某种原因,JSFiddle 不喜欢 AJAX,但我的网站使用相同的 javascript,所以我可以向您保证它是准确的。

【讨论】:

以上是关于如何在允许用户导航到其他页面的同时使用 strophe 保持聊天会话打开?的主要内容,如果未能解决你的问题,请参考以下文章

Confluence 6 配置快速导航

Flutter:无法导航到另一个页面

Flutter:使用popUntil导航到页面时如何更新页面

如何同时使用导航规则和 f:ajax

Sharepoint + Jquery,在该页面上添加活动类到导航

用于链接/导航到其他 JSF 页面的 URL