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

2024-02-01

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

以下是 Firebug 控制台的示例:

在这里,我刚刚登录并立即刷新页面。您看到的第一个帖子是登录后的初始存在节。在该请求之后,新的 BOSH 请求将开始保持与服务器的连接打开。当我刷新页面时,该请求被中止。到目前为止,一切都按我的预期进行。

然而,在中止请求之后,strope 会使用完全相同的 RID 发送另一个请求。最后的请求是从 strope 发出的(我想)是出于礼貌,与问题无关。然而,它的响应表明 openfire(XMPP 服务器)终止了会话以试图保护帐户。

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

在发布违规代码之前是否应该检查任何已知问题?


我回到工作原型,但发现它也有同样的错误。经过一番测试,我发现只有在我立即刷新页面后才会出现这种情况。如果在刷新页面之前发出请求,则不会发生该错误。我向开发人员通报了这一情况,并进行了修改以使其正常工作,直到他们修复为止。

UPDATE:

我发现这个onlyFirefox 会发生这种情况。 Safari 甚至 IE 都能正确执行此操作(即不要重复发布)。所以也许最终是 Firefox 表现不佳!

更新2:

我收到一封邮件,要求我进行修改。他们来了。

在 strope.js 的第 2566 行左右,更改

sendFunc();

to

if (req.sends == 0) {
   sendFunc();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Strope 在页面卸载时发送双重请求 的相关文章

随机推荐

  • new String(char[]) 和 char[].toString 之间的区别

    Java 中以下两个代码块的输出是不同的 我试图理解为什么 private String sortChars String s char arr s toCharArray creating new char Arrays sort arr
  • Resteasy一般启用GZIP

    我有一个 RestEasy Java EE 应用程序 当我将 GZIP 添加到组件类时 如果客户端发送 accepts gzip 则服务器答案将被压缩 有没有办法为所有组件普遍启用 gzip 我不喜欢为每个类添加注释 我正在使用 RestE
  • 十六进制增量/循环直到 FFF

    我有一个包含十六进制数字的字符串 我想增加该十六进制数字 直到达到最大数字 FFF 我如何循环才能获得起始十六进制和 FFF 之间的每个数字 我尝试将字符串转换为字节数组 但之后陷入困境 string stringHex 7A string
  • 使用 BigQuery 获取 Firebase Analytics 历史数据

    我已将 firebase 分析应用程序链接到 BigQuery 并在 app events 和 app events intraday 表下获取原始数据 使用 BigQuery 的主要要求是获取在 Firebase 分析仪表板下获得的分析数
  • 如何将Gitlab项目复制到另一个Gitlab存储库?

    我想将 GitLab 项目复制到另一个存储库 该存储库应该是完全独立来自原始项目 为此 我尝试将原来的项目fork到另一个项目中 但在原始项目中 维护者仍然可以看到分叉列表 并知道其他分叉的维护位置 我想要一个完整的副本 没有任何到主项目的
  • WinSCP .NET 程序集拒绝 RSA/DSA 密钥指纹

    我正在尝试使用 WinSCP NET 程序集连接到 WinSCP 服务器 我遇到的问题是它会轰炸检查主机密钥指纹 我已经创建了 RSA 密钥 我的代码如下 var server new WinSCP SessionOptions serve
  • 将某些指标与 Google Analytics API v4 中的会话和产品相关联

    我在 GA api 中需要获取一些非常具体类型的指标 站点级别 使用购物车进行的站点访问添加 这是会话次数的计数 发生在会话中发生购物车添加的时间范围内 产品视图的站点访问 这是对在会话中出现产品详细信息视图的时间范围内发生的会话数量的计数
  • 材质按钮在预览中未正确显示

    这个问题与我的另一个问题相关 材质按钮 样式应用不正确 丑陋极了 https stackoverflow com questions 53224903 material button styles not being applied cor
  • TFS 2010:当我可以使用 XamlReader 进行反序列化时,为什么无法使用 XamlWriter.Save 反序列化 Dictionary

    public static string GetXml Dictionary
  • Python ctypes 可以在 x86-64 上加载 32 位 C 库吗?

    我有一台安装了 32 位库的 64 位 RHEL 主机 一个供应商有 32 位 所以我想使用 ctypes 加载到 Python 中 from ctypes import CDLL CDLL 32bitdinosaur so OSError
  • 运行应用程序期间的 Grails 警告/错误

    目前 当我尝试在 Eclipse 中运行我的 Google App Engine Grails 测试应用程序时 我看到了以下警告 警告 目标导致名称覆盖 startLogging 警告 找不到 C Users Some Person gra
  • 如何知道子列表中某个元素的索引

    如何知道子列表中元素的索引 类似的问题在这里被问到 https stackoverflow com questions 176918 finding the index of an item given a list containing
  • UIAutomator Facebook 登录

    我为我的应用程序创建了一个 UIAutomator 登录测试 它适用于某些模拟器 问题是 它并不适用于所有人 UiObject input mDevice findObject new UiSelector instance 0 class
  • SPARQL 查询根据语句的顺序返回不同的结果

    我有一个 SPARQL 查询 它返回两个资源的最具体的常见类 当我尝试运行它时https dbpedia org sparql https dbpedia org sparql 有时它什么也不返回 有时它返回我想要的类 我注意到它与查询中语
  • Spring MVC + Hibernate:数据验证策略

    我们都知道 Spring MVC 通常与 Hibernate Validator 和 JSR 303 集成得很好 但正如有人所说 Hibernate Validator 只是用于 Bean Validation 的东西 这意味着更复杂的验证
  • ES6 类执行多态性的能力

    我试图通过 ES6 类来模拟多态性 以便能够更好地理解这个理论 概念很清楚 设计对象以共享行为并能够用特定行为覆盖共享行为 但恐怕我上面的代码不是一个有效的多态性示例 由于我缺乏经验 如果您能全面地回答以下问题 我将不胜感激 事实上 两个类
  • 使用 swift4 在 xcode 中对单个项目使用不同的 GoogleService-Info.plist

    我有一个项目 但有 4 个不同的环境 开发 暂存 质量检查 生产 我已经从移动设备的设置中给出了他们的 环境的网络服务 URL 路径 现在我想为所有这些不同的环境使用不同的 GoogleService info plist 就像当我从后端选
  • MEF 对象生命周期

    我有一个名为 Foo 的类 using System using System ComponentModel Composition namespace MefTest Export internal class Foo public Fo
  • 拟合部分高斯

    我正在尝试使用拟合高斯总和scikit学习 http scikit learn org stable index html因为 scikit learn高斯混合 http scikit learn org stable modules ge
  • Strope 在页面卸载时发送双重请求

    我用 jQuery Strope 编写了一个 XMPP 客户端 一切都运行良好 一对一 存在 MUC 等 并且包含在 jQuery 插件中 但是 当页面卸载时 它会发送 2 个具有相同 Rid 的最终请求 最近当我开始处理会话附件时 这才成