使用 XMPP Strophe BOSH 刷新页面后客户端自动变为不可用
Posted
技术标签:
【中文标题】使用 XMPP Strophe BOSH 刷新页面后客户端自动变为不可用【英文标题】:Client automatically went unavailable after page refresh using XMPP Strophe BOSH 【发布时间】:2013-10-09 06:22:06 【问题描述】:我有一个网络聊天应用程序。我正在使用 BOSH、Openfire 和 Strophe。除了页面刷新时,一切都很好。我在页面刷新之前使用 cookie 保存用户信息(JID、RID、SID)。但是,当连接重置时,所有在线用户都会显示出来,但是当您按顺序向客户端发送消息时,尽管会话仍然存在,但它会自动变为 UNAVAILABLE。
编辑:
$(window).bind('onunload', function ()
if(connection !== null)
connection.pause();
set_cookies();
else
del_cookies();
);
刷新后,应使用 Attach() 函数恢复连接。将显示所有在线联系人的列表,但几秒钟后它将不可用。
【问题讨论】:
您可以发布页面重新加载后的请求和响应吗? 喜实际代码或控制台流量? 【参考方案1】:你可以通过在创建连接时保存 rid 来解决这个问题,rid 会在每个请求时更新,xmpp 服务器通常有一些窗口用于 rids,因此在 cookie 中保持 rid 更新很重要。
尝试根据 strophe 发出的每个 BOSH 请求更新 rid。 这可以通过在连接对象的 xmlOutput 方法中插入节省代码来完成:
conn.xmlOutput = function(body)
var rid = $(body).attr('rid');
// save rid to cookies
【讨论】:
以上是关于使用 XMPP Strophe BOSH 刷新页面后客户端自动变为不可用的主要内容,如果未能解决你的问题,请参考以下文章
Strophe 无法通过 BOSH 服务器连接到 Facebook
使用 Strophe js (CONNFAIL) 连接到 Prosody XMPP 服务器
如何使用 XMPP 和 BOSH 实现 Facebook 聊天