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);
}
이 하나의 연결입니다 (내가 피들러 overrites 프록시 구성을 발견하기 때문에, 그것으로 잘 작동 된 다)
이 피들러를 사용하여 귀하의 답변 주셔서 & 조언을 다윗 감사? – davidfowl예, 연결을 하나 만듭니다. 메인 게시물을 코드 –
으로 업데이트합니다. 콘솔 응용 프로그램입니까? 코드가 표면에 잘 보인다. – davidfowl