2012-01-13 3 views
1

私はphonegapとjquerymobileを使用してwebworksアプリケーションを開発しています。私はsoapclient.jsを使用してバックエンドサーバーにSOAP要求を作成します。私たちはタイムアウトの問題に直面していました。詳細な調査中に、第11回ajaxリクエストが一貫して応答しなくなったことに気付きました。適切な場所に物を置くために、私たちは同じ呼び出しを繰り返しながらテストを繰り返し、特定の要求が機能することを確認しました。BlackBerry OS6 WebWorksがajaxリクエストを10に制限すると、接続リークが発生していますか?

私たちは、ローエンドの自己作成型xmlhttprequestオブジェクトを使用し、send()コールまではエラーはありません。 onreadystate変更リスナーは、11回目のコールで呼び出されません。

この11回目のコールが約5分で賞賛されたとき、私はBlackBerryのブラウザフィールドに接続漏れがあると信じていました。

私は、10個の接続(非平行)が可能であると考えています。いつかBBガベージクリーンアップトリガーが入ると、古い接続がほとんどなくなり、キュー内で待っている新しい接続が実行されます。私は、この待機期間中、 サーバーは、私はこの ことを確認した

  • 要求を受信しませんでしたサーバーのログから確認した

    1. 詳細情報は関係なく、私がのWi使うかどうかの起こり-FiまたはGPRS

    2. アプリケーションを終了して再オープンすると、アプリケーションは再び起動しますが、 最初の10個のリクエストまで

    私はabort()を呼び出してnullに設定してタイムアウト期間を過ぎた場合、リクエストを中止しようとしました。しかし、それでも私はしばらく待たなければ11番目のリクエストをすることができません。

    javascriptがUIスレッドなどを待っているような理由が考えられます。しかし、11回目のリクエストで99%の再現性があり、アプリケーションから何らかの変数またはカウントが通知されているかどうかを確認するために、コードを何度も再チェックしました。アラートは.sendまでうまく動作しますが、コールバックは呼び出されません。

    私は、この動作が自分のアプリケーションに固有であるかどうかを確認するためにajaxを呼び出す非常にプレーンなアプリケーションを作成しようとしていますが、プラットフォームの制約です。

  • 答えて

    0

    最後に、苦労した日のうちに、ハードウェアキーにjavascript関数を割り当てることが原因で起こっていたことが判明しました。異なるjQueryページの下で異なるメニュー項目を使用していたので、メニューボタンはさまざまなアクティビティで異なるJavaScript関数にバインドされ、BB WebWorksアプリケーションでメモリリークが発生しました。メニューハードウェアボタンをグローバル変数にバインドして、バインドを何度も繰り返し呼び出すのではなく、割り当てを置き換えたときに解決されました。

    関連する問題