我々は受け入れテストにWatinを広範囲に使用しています.WebページにSignalRを導入する際に問題が発生し始めています。私たちは "Button.Click"や "WebBrowser.GoTo"のようなもののタイムアウトを取得しています。 Watinの「Internet Explorerがビジー状態の時にタイムアウトしました」という例外が発生していますが、これは、SignalRがクライアントからポーリングしているためです(WebSocketが到着したときには、これはもっとうまくいくでしょう)。誰かがこれの回避策を知っていますか?SignalRを使用した場合のWatinのタイムアウト
答えて
私はSignalRの専門家ではありませんが、WebSyncという商用実装を制作している会社で働いています。
私の初期の疑念は、IEの同時リクエスト制限を打つかもしれないということです。
まず、Firefoxでは同じテストがうまくいきますが、IEではできませんか? (IEは通常、同時リクエストを持つ他のブラウザよりも悪いです)。また、どのバージョンのIEがテストされていますか?同時リクエストの制限は、ブラウザの世代によって異なります。このarticle documenting the concurrent request limits for IEをご覧ください。 IEでは、この制限は、異なるウィンドウで開いている同じページの複数のコピーに影響を与えることさえあります。しかし、それはIEのバージョンに依存し、マイクロソフトは時間の経過とともに着実に改善している。
IEは、ドメインごとに2つの同時リクエストのみで動作する場合があります。ブラウザの開発者ツールを開いて、進行中のアクティブなHttpRequestを監視する価値があります。 SignalRの長いポーリングリクエストが表示されますが、他の頻繁なAJAXアクティビティで、2番目に利用可能なリクエストスロットをブロックしている可能性があります。 (AJAXリクエストを作成しているSignalRとまったく関係のない何か、あるいは膨大なCSSやJSファイルのような読み込みリソースが遅いかもしれません)
WebSyncではwebsyncを「stream」のようなサブドメインに移動することでこの問題を解決します。 mydomain.com "あなたのページリソースはまだ "www.mydomain.com"にあるので、最悪の場合でもIEは2つの同時リクエストを "www"にすることができます。 2つの同時リクエストが「ストリーム」されます。サイトが本当に大規模な場合は、「a.stream.mydomain.com」、「b.stream.mydomain.com」、「z.stream.mydomain.com」を使用してサブドメインをさらに分割することもできます。エンドユーザーが複数のブラウザウィンドウ(各ウィンドウが同じドメインを指している)でページを開く可能性が高い場合、問題をさらに緩和することができます。
ロングポーリング接続を移動できない場合は、イメージ、スタイルシート、およびjavascriptなどの他のものを "static.mydomain.com"などの別のドメインに移動して、それらの要求が別の場所に移動するようにします。
Firefoxを試していないIE9で作業しています。私はsignal-rもiPad上で問題を抱えていることを知っています。同じ問題かどうかは疑問です。他の情報をありがとう、それに掘り行く:-) – JoshBerke
- 1. whileループを使用した場合のNodeMCUのタイムアウト
- 2. click()Webdriver Selenium関数Pythonを使用した場合のタイムアウト
- 3. HttpWebRequestを使用した場合の定期的なタイムアウト
- 4. IsolationLevel.ReadUncommittedを使用した場合のタイムアウトSqlException
- 5. WatiNを使用したフラッシュボタンの処理
- 6. Firefoxの待ち時間のタイムアウト[WatiN]
- 7. MVCを使用したSignalR
- 8. オートコンプリートドロップダウンメニューWatiNを使用したテスト
- 9. スティッキセッションを使用する場合、SignalRバックプレーンは必要ですか?
- 10. NuGetを使用したSignalRの問題
- 11. セットアップが遅いSignalR接続の場合
- 12. aspnet_membershipを使用した場合のリスク
- 13. jqueryを使用した文の場合
- 14. "class.getResource("/")"を使用した場合のNullPointerException
- 15. VLookupを使用した文の場合
- 16. ハードライトブレンドモードを使用した場合のハイライトアーティファクト
- 17. tF.slim.evaluation.evaluate_onceを使用した場合のNotFoundError
- 18. substring()を使用した場合のNumberFormatException
- 19. combineByKey()を使用した場合のエラー
- 20. && ||を使用したロジックの場合
- 21. getExternalStoragePublicDirectoryを使用した場合のFileNotFoundException
- 22. TextWatcherを使用した場合のNullPointerError
- 23. ピカソを使用した場合のjava.lang.NoSuchMethodError
- 24. Directory.GetFilesを使用した場合のUnauthorizedAccessException
- 25. javax.cryptoを使用した場合のClassCastException
- 26. afficheを使用した場合のエラー
- 27. Activemqを使用した場合のボトルネック
- 28. Setを使用した場合のConcurentModificationException
- 29. メモリ内のアグリゲータを使用したSpring統合タイムアウト
- 30. コンソールアプリケーションSignalRクライアント切断タイムアウト
SignalRを使用したデータの受信は、セッションロジックが処理されるのと同じスレッドでブロックされた状態で長いポーリングによって行われます。その理由は、データを受信するのを待ってそのポイント上のスレッドをブロックするため、他のロジックをブロックする可能性があるからです。非同期的にデータを受信する方法があれば、それは調べるべきことかもしれません。 – moka
私は同じ問題に直面しています。どんな解決策ですか? –
私はWindows 8でDot Net 4.0でIE10を使用していますが、同じ問題があります。 WatiNサイトはIE10をサポートしているとは言いませんが、WatiNはIE10上ではSignalRを使用しない限り問題なく動作します。試してみたい問題の解決策の1つが[Selenium](http://docs.seleniumhq.org/)です。 WatinNはIE(と私たちが今見つけることができないいくつかの古いバージョンのFirefox)でのみ動作しますが、SeleniumはIE、Firefox、Chromeで動作します。私はUIテストを自動化するだけで、ChromeまたはFirefoxでSeleniumを使用します。 – Sujeewa