客户端在使用XMPP Strophe BOSH刷新页面后自动不可用



我有一个网络聊天应用程序。我正在使用BOSH,Openfire和Strophe。除了页面刷新外,一切都运行良好。 我在页面刷新之前使用 cookie 保存用户信息(JID、RID、SID(。但是,重置连接后,将显示所有联机用户,但是当您按后续顺序向客户端发送消息时,尽管会话仍处于活动状态,但它将自动变为不可用状态。

编辑:

$(window).bind('onunload', function () {
    if(connection !== null){
        connection.pause();
        set_cookies();
    }else{
        del_cookies();
    }
});

刷新后,应使用 Attach(( 函数恢复连接。 将显示所有在线联系人的列表,但几秒钟后它将不可用。

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

尝试更新 rid 对频闪发出的每个 BOSH 请求。这可以通过将保存 rid 的代码插入到连接对象的 xmlOutput 方法来完成:

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

最新更新