Я использую DLL SignalR.client для диалога с веб-сайтом с помощью SignalR. Он отлично работает, когда клиент и сайт находятся на одной машине. (Invocation hub method является немедленным)Вызов методов хаба медленнее по локальной сети
Однако, теперь, когда я настраивал сайт на машине по моей сети, вызовы (вызовы) занимают среднее значение 2,5 секунды. (но работа)
Я пинг машины в < 1 мс.
Использование Wireshark Я видел, что пакеты отправляются через 2,5 секунды.
я отладил DLL SignalR.client и он застрял на уровне System.Threading.Task (называемый здесь, в HttpHelper.cs)
[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 для воспроизведения задержки.
имп: Вот (очень простой) код моего тестового приложения:
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);
}
ли это одно соединение? – davidfowl
Да, я создаю одно соединение. Я обновляю основную запись кодом –
Это консольное приложение? Код выглядит хорошо на поверхности. – davidfowl