0

我有一个网络聊天应用程序。我正在使用 BOSH、Openfire 和 Strophe。除了页面刷新时,一切都很好。我在页面刷新之前使用 cookie 保存用户信息(JID、RID、SID)。但是,当连接重置时,所有在线用户都会显示出来,但是当您按顺序向客户端发送消息时,尽管会话仍然存在,但它会自动变为 UNAVAILABLE。

编辑:

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

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

4

1 回答 1

2

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

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

conn.xmlOutput = function(body) {
    var rid = $(body).attr('rid');
    // save rid to cookies
}
于 2013-10-20T18:36:11.877 回答