【问题标题】:Client automatically went unavailable after page refresh using XMPP Strophe BOSH使用 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() 函数恢复连接。将显示所有在线联系人的列表,但几秒钟后它将不可用。

【问题讨论】:

  • 您可以发布页面重新加载后的请求和响应吗?
  • 喜实际代码或控制台流量?

标签: xmpp strophe


【解决方案1】:

你可以通过在创建连接时保存 rid 来解决这个问题,rid 会在每个请求时更新,xmpp 服务器通常有一些窗口用于 rids,因此在 cookie 中保持 rid 更新很重要。

尝试根据 strophe 发出的每个 BOSH 请求更新 rid。 这可以通过在连接对象的 xmlOutput 方法中插入节省代码来完成:

conn.xmlOutput = function(body) {
    var rid = $(body).attr('rid');
    // save rid to cookies
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-20
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多