Возьмите следующее консольное приложение
static void Main(string[] args)
{
Thread connector = new Thread(Connector);
connector.Start();
while (true)
{
Thread.Sleep(500);
}
}
private static void Connector()
{
SignalR.Client.Hubs.HubConnection connection = new SignalR.Client.Hubs.HubConnection("http://192.168.42.10:1327/Chat");
SignalR.Client.Hubs.IHubProxy loginHub = connection.CreateProxy("LoginHub");
connection.Received += connection_Received;
connection.Reconnected += connection_Reconnected;
connection.StateChanged += connection_StateChanged;
connection.Error += connection_Error;
connection.Closed += connection_Closed;
connection.Start().Wait();
}
LoginHub реализует IDisconnect.
Если я запущу приложение, позволю ему подключиться, вытащу сетевой кабель, дождусь срабатывания события отключения на стороне сервера, снова подключу сетевой кабель, клиент снова подключится, а затем немедленно закроет свое соединение.
Если я отсоединяю и снова подсоединяю сетевой кабель до того, как сработает отключение на стороне сервера, соединение снова восстанавливается.
Это намеренное поведение? Как должно работать повторное подключение?