我用 jQuery+Strophe 编写了一个 XMPP 客户端。这一切都运作良好(一对一、存在、MUC 等)并且包含在一个 jQuery 插件中。但是,当页面卸载时,它会发送 2 个具有相同删除的最终请求。直到最近我开始处理会话附件时,它才成为一个问题。
以下是 Firebug 控制台的示例:
在这里,我刚刚登录并立即刷新了页面。您看到的第一个帖子是登录后的初始状态节。在该请求之后,一个新的 BOSH 请求开始保持与服务器的连接。当我刷新页面时,此请求被中止。到目前为止,一切都按我的预期进行。
但是,在中止请求之后,strophe 会发送另一个具有完全相同 RID 的请求。最后的请求是从 strophe 发出的(我想)有礼貌,与问题无关。然而,它的响应表明 openfire(XMPP 服务器)为了保护帐户而终止了会话。
我查看了我的代码,但找不到代表我提出的任何请求。我相当肯定 strophe 发送了这个请求。但是,它必须来自我所做的事情,因为我的初始原型没有这个问题(事实上,我经常不得不在管理面板上手动终止会话,因为我忘记通过客户端关闭它们)。
在发布违规代码之前,是否有任何已知问题需要检查?