2012-05-10 2 views
4

우리는 수용 테스트에 광범위하게 Watin을 사용하고 있으며 이제 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 사이트는 Internet Explorer 10을 지원한다고 말하지 않지만, WatiN은 Internet Explorer 10에서 SignalR을 사용하지 않는 한 정상적으로 작동합니다. 이 문제에 대한 한 가지 해결책은 [Selenium] (http://docs.seleniumhq.org/)입니다. WatinN은 IE (그리고 지금은 발견 할 수없는 일부 이전 버전의 Firefox)에서만 작동하지만 Selenium은 IE, Firefox 및 Chrome에서 작동합니다. Chrome이나 Firefox에서 Selenium을 사용하여 UI 테스트를 자동화하면됩니다. – Sujeewa

답변

4

저는 SignalR의 전문가는 아니지만 WebSync이라는 상용 구현체를 생산하는 회사에서 일하고 있습니다.

내가 처음으로 의심하는 점은 IE에 대한 동시 요청 수 제한이 있다는 것입니다.

먼저 Firefox에서 동일한 테스트가 제대로 작동 하나 IE가 아닌가요? (IE는 보통 동시 요청을하는 다른 브라우저보다 나쁩니다). 또한 어떤 버전의 IE가 테스트되고 있습니까? 동시 요청 제한은 브라우저 세대에 따라 다릅니다. 이 article documenting the concurrent request limits for IE을보세요. IE에서는이 한계가 다른 페이지에서 열리는 동일한 페이지의 여러 사본에도 영향을 미칠 수 있습니다. 그러나 그것은 IE의 버전에 달려 있습니다. 마이크로 소프트는 꾸준히 시간이 지남에 따라 발전해 왔습니다.

경우에 따라 IE는 도메인 당 2 개의 동시 요청만으로 작동합니다! 브라우저에서 개발자 도구를 열고 진행중인 HttpRequests를 모니터링하는 것이 좋습니다. SignalR에 대한 긴 폴링 요청을 볼 수 있지만 두 번째 사용 가능한 요청 슬롯을 차단할 수있는 다른 자주 발생하는 AJAX 활동인지 확인하십시오. (아마도 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"을 사용하여 하위 도메인을 더 나눌 수도 있습니다. 최종 사용자가 여러 브라우저 창 (각 창은 동일한 도메인을 가리키고 있음)에서 페이지를 열 가능성이 더 높으면 문제를 더욱 완화 할 수 있습니다.

긴 폴링 연결을 이동할 수없는 경우 이미지, 스타일 시트 및 자바 스크립트와 같은 다른 항목을 "static.mydomain.com"과 같은 별도의 도메인으로 이동하여 해당 요청이 다른 곳으로 이동하게합니다.

+0

Firefox를 사용해 보지 않은 IE9와 협력하고 있습니다. 나는 signal-r도 현재 iPad에서 실행되는 문제가 있다는 것을 알고 있으며, 같은 문제인지 궁금합니다. 다른 정보를 보내 주셔서 감사합니다. – JoshBerke