BlackBerry OS6 WebWorks将ajax请求限制为10,是否存在连接泄漏?

时间:2012-01-13 13:38:36

标签: ajax blackberry cordova blackberry-webworks

我正在使用phonegap和jquerymobile开发一个webworks应用程序。我使用soapclient.js为我的后端服务器创建soap请求。我们遇到了超时问题,在详细调查期间,我们注意到第11条ajax请求始终没有响应。为了把东西放在正确的位置,我们重复测试,重复相同的调用,以便我们知道特定的请求是有效的。

我们使用低端自创的xmlhttprequest对象,直到send()调用没有错误。第11次调用不会调用onreadystate change listener。

有时候,当我们等待足够长的时间时,这个第11次通话确实在大约5分钟左右得到尊重,让我相信BlackBerry browserfield中存在连接泄漏。

我怀疑可以制作10个连接(非并行)的限制。在BB垃圾清理触发后的某个时间,它清除了几个旧连接,队列中等待的新连接被执行。

更多信息

  1. 我已从服务器日志验证在此等待期间, 服务器没有收到请求
  2. 我已经证实了这一点 无论我是否使用Wi-Fi或GPRS
  3. ,都会发生
  4. 应用程序再次开始工作,如果我关闭并重新打开它,但只是直到 前10个请求
  5. 我试图通过调用abort()并将其设置为null来中止请求,如果它超过了我的超时时间。但即便如此,如果我不等一段时间,我也无法提出第11项请求。

    我会相信任何其他原因,如javascript等待UI线程等,如果这种行为是随机的。但它在第11次请求中可重现率为99%,我已多次重新检查代码,以查看是否有任何变量或计数从应用程序通知。警报工作正常,直到.send但没有调用回调。

    我现在正在尝试创建一个非常简单的应用程序,它会调用ajax来查看此行为是否特定于我的应用程序,还是平台约束,但如果有任何人有此类经验,请分享。

1 个答案:

答案 0 :(得分:0)

经过一天的奋斗之后,我们发现由于将javascript函数分配给硬件密钥而发生了这种情况。由于我们在不同的jQuery页面下使用不同的菜单项,因此菜单按钮被绑定到各种活动上的不同javascript函数,这导致BB WebWorks应用程序中的内存泄漏。当我们将菜单硬件按钮与全局变量绑定并继续替换它的赋值而不是一次又一次地调用bind时,我们解决了它。