我有一个网络聊天应用程序。我正在使用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
}