2012-05-10 10 views
4

我々は受け入れテストにWatinを広範囲に使用しています.WebページにSignalRを導入する際に問題が発生し始めています。私たちは "Button.Click"や "WebBrowser.GoTo"のようなもののタイムアウトを取得しています。 Watinの「Internet Explorerがビジー状態の時にタイムアウトしました」という例外が発生していますが、これは、SignalRがクライアントからポーリングしているためです(WebSocketが到着したときには、これはもっとうまくいくでしょう)。誰かがこれの回避策を知っていますか?SignalRを使用した場合のWatinのタイムアウト

+0

SignalRを使用したデータの受信は、セッションロジックが処理されるのと同じスレッドでブロックされた状態で長いポーリングによって行われます。その理由は、データを受信するのを待ってそのポイント上のスレッドをブロックするため、他のロジックをブロックする可能性があるからです。非同期的にデータを受信する方法があれば、それは調べるべきことかもしれません。 – moka

+0

私は同じ問題に直面しています。どんな解決策ですか? –

+0

私は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

答えて

4

私は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"などの別のドメインに移動して、それらの要求が別の場所に移動するようにします。

+0

Firefoxを試していないIE9で作業しています。私はsignal-rもiPad上で問題を抱えていることを知っています。同じ問題かどうかは疑問です。他の情報をありがとう、それに掘り行く:-) – JoshBerke

関連する問題