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


How would I keep a chat session open with strophe while still allowing users to navigate to other pages?

如果这个问题看起来很模糊,我很抱歉,但以下是我的答案。

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

  1. 连接到我的BOSH服务器
  2. 根据登录者提取数据
  3. 在侧边栏上显示用户的名册

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

我知道

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

但我知道肯定还有更多的东西。只是有点不知道从哪里开始寻找。AJAX我知道它是否会发挥很大作用,但我不喜欢一直只依赖javascript。

感谢您的帮助。

如果有点晚,很抱歉,但您可以使用Strophe的附加功能,这样您的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 ...*

有一个contentdiv和一个chatdiv。我的网站使用AJAX只是为了美观,所以我有一个navdiv和contentdiv,我用jQuery加载东西。看看我的网站:http://derek.genevievehoward.com/和这个JSFiddlehttp://jsfiddle.net/howderek/tNVd8/

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