Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Strophe在页面卸载时发送双重请求_Javascript_Xmpp_Strophe - Fatal编程技术网

Javascript Strophe在页面卸载时发送双重请求

Javascript Strophe在页面卸载时发送双重请求,javascript,xmpp,strophe,Javascript,Xmpp,Strophe,我已经用jQuery+Strophe编写了一个XMPP客户机。这一切都运行良好(1对1、状态、MUC等),并且包含在jQuery插件中。但是,当页面卸载时,它会发送两个具有相同rid的最终请求。直到最近,当我开始处理会话附件时,它才成为一个问题 以下是Firebug控制台的一个示例: 在这里,我刚刚登录并立即刷新了页面。您看到的第一个帖子是登录后的初始状态小节。在该请求之后,一个新的BOSH请求开始保持与服务器的连接打开。刷新页面时,此请求被中止。到目前为止,一切都如我所料 但是,在中止请求之

我已经用jQuery+Strophe编写了一个XMPP客户机。这一切都运行良好(1对1、状态、MUC等),并且包含在jQuery插件中。但是,当页面卸载时,它会发送两个具有相同rid的最终请求。直到最近,当我开始处理会话附件时,它才成为一个问题

以下是Firebug控制台的一个示例:

在这里,我刚刚登录并立即刷新了页面。您看到的第一个帖子是登录后的初始状态小节。在该请求之后,一个新的BOSH请求开始保持与服务器的连接打开。刷新页面时,此请求被中止。到目前为止,一切都如我所料

但是,在中止请求之后,strophe会发送另一个具有完全相同RID的请求。最后一个请求是由strophe发出的(我想)礼貌请求,与问题无关。但是,它的响应表明openfire(XMPP服务器)在试图保护帐户时终止了会话

我查看了我的代码,找不到代表我提出的任何请求。我很确定strophe发出了这个请求。然而,它一定来自我做的事情,因为我的初始原型没有那个问题(事实上,我经常不得不手动终止管理面板上的会话,因为我忘记了通过客户端关闭它们)


在发布有问题的代码之前,是否有任何已知问题需要检查?

我回到了工作原型,但发现它也有同样的错误。经过一点测试,我发现只有在我立即刷新页面后才会发生这种情况。如果在刷新页面之前发出请求,则不会发生错误。我把这件事告诉了开发人员,并进行了一次黑客攻击,使其能够工作,直到它在他们这边被修复为止

更新: 我发现这只发生在Firefox上。Safari甚至IE正确操作(即不要使用双柱)。所以说到底,Firefox的表现很糟糕

更新2: 我收到一封要求修改的邮件。给你

在第2566行附近的strophe.js中,更改

sendFunc();


它对我有效,我不建议更改库文件,但我别无选择,它成功了@迈克
if (req.sends == 0) {
   sendFunc();
}