2013-03-04 1 views
1

SignalR.client DLL을 사용하여 SignalR을 사용하는 웹 사이트와 대화합니다. 클라이언트와 사이트가 같은 시스템에 있으면 완벽하게 작동합니다. (호출하는 허브 방법은 즉각 임)로컬 네트워크에서 허브 메소드 호출 속도가 느림

그러나 이제 내 네트워크를 통해 컴퓨터에 사이트를 설정 했으므로 전화 (호출)는 평균 2.5 초 걸립니다. (그러나 일)

기계를 < 1ms로 핑 (ping)하십시오.

Wireshark를 사용하여 2.5 초 후에 패킷이 전송되는 것을 보았습니다.

나는 (HttpHelper.cs에서, 여기라고도 함) SignalR.client DLL을 디버깅과는 System.Threading.Task 수준에서 붙어

[SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "Exceptions are flowed back to the caller.")] 
    public static Task<Stream> GetHttpRequestStreamAsync(this HttpWebRequest request) 
    { 
     try 
     { 
      return Task.Factory.FromAsync<Stream>(request.BeginGetRequestStream, request.EndGetRequestStream, null); 
     } 
     catch (Exception ex) 
     { 
      return TaskAsyncHelper.FromError<Stream>(ex); 
     } 
    } 

과정을 늦출 수 있는지의 어떤 생각?

고마워요.

ps : 지연을 재생산하기 위해 SignalR 채팅 예제를 사용했습니다.

PPS : 여기 내 테스트 애플 리케이션의 (정말 간단) 코드의이 :

var connection = new HubConnection("http://IP:PORT/SITENAME/"); 
    var myHub = connection.CreateHubProxy("ChatHub"); 

    // Start the connection 
    connection.Start().Wait(); 

    while (true) 
    { 
     string sMsg = string.Format("Hello world from winform! Sent(winform) at {0}", DateTime.Now.ToString("hh:mm:ss.fff")); 
     Console.WriteLine("Sending data : " + sMsg); 

     myHub.Invoke("Send", "Winform", sMsg).ContinueWith(task2 => 
     { 
     if (task2.IsFaulted) 
     { 
      Console.WriteLine("An error occurred during the method call {0}", task2.Exception.GetBaseException()); 
     } 
     else 
     { 
      Console.WriteLine("Successfully called MethodOnServer at {0}", DateTime.Now.ToString("hh:mm:ss.fff")); 
     } 
     }); 
     Thread.Sleep(60*1000); 
    } 
+0

이 하나의 연결입니다 (내가 피들러 overrites 프록시 구성을 발견하기 때문에, 그것으로 잘 작동 된 다)

이 피들러를 사용하여 귀하의 답변 주셔서 & 조언을 다윗 감사? – davidfowl

+0

예, 연결을 하나 만듭니다. 메인 게시물을 코드 –

+0

으로 업데이트합니다. 콘솔 응용 프로그램입니까? 코드가 표면에 잘 보인다. – davidfowl

답변

0

문제로 인해 나쁜 로컬 네트워크 구성했다. 필자의 전문 컴퓨터는 자동 구성 스크립트 + 자동 감지 연결 매개 변수를 사용하여 모든 것을 느리게하고있었습니다. (=> 시간의 바보 낭비)