2012-01-13 61 views
1

我正在开发一个使用phonegap和jquerymobile的webworks应用程序。我使用soapclient.js来创建soap请求到我的后端服务器。我们正面临超时问题,在详细调查过程中,我们注意到第11个Ajax请求一直没有回应。为了把事情放在正确的位置,我们重复测试,重复相同的调用,以便我们知道特定请求的工作原理。BlackBerry OS6 WebWorks将ajax请求限制为10,是否存在连接泄漏?

我们使用低端自创的xmlhttprequest对象,直到send()调用没有错误。 onreadystate更改侦听器不会被呼叫第11次调用。

有时当我们等待足够长的时间时,第11次通话在大约5分钟左右就获得了荣誉,这让我相信在BlackBerry Browserfield中存在连接泄漏。

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

更多信息

  1. 我已经从这段等待期间, 服务器没有收到
  2. 我已经验证了这 请求服务器日志核实情况,不论我是否使用Wi -Fi或GPRS
  3. 应用程序再次开始工作,如果我关闭并重新打开它,但只有直到 前10个请求

我试图中止请求,如果它通过调用abort()并将其设置为null来超过我的超时期限。但即使如此,如果我不等待一段时间,我也无法提出第11个要求。

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

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

回答

0

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