1 ответ:
повторное подключение концентратора происходит, когда клиент переходит в автономный режим, а затем восстанавливает подключение вскоре после этого. Значения конфигурации SignalR в значительной степени определяют временные метки следующих примеров, поэтому не берите время дословно.
вот несколько примеров и их результаты (формат времени m:ss), связанные с повторным подключением поведения:
когда я упоминаю следующее, Я имею в виду метод концентратора на стороне сервера
- OnConnected
- OnDisconnected
- OnReconnected
1)
0: 00-клиент подключается к серверу, OnConnected запускается
0: 10-клиент теряет соединение из-за проблем с провайдером (и понимает, что он теряет соединение)
0: 15-клиент восстанавливает подключение
0: 16-onreconnected событие срабатывает2)
0: 00-клиент подключается к серверу, OnConnected запускается
0:10 - клиента теряет соединение из-за вытягивания кабеля ethernet (не понимает, что он отключен)
0: 15-клиент восстанавливает подключение
здесь могут произойти две вещи
A: 0: 16-ничего не происходит, и клиент продолжает свое предыдущее соединение
B: 0:~45-клиент осознает свою отключенную *
B: 0: 46-клиент переходит в состояние повторного подключения
B: 0: 47-клиент успешно повторно подключается и OnReconnected событие вызванный.3)
0: 00-клиент подключается к серверу, OnConnected запускается
0: 10-клиент теряет соединение из-за вытягивания кабеля ethernet (не понимает, что он отключен)
0:~45-клиент осознает свою отключенность *
0:46 - клиент переходит в состояние повторного подключения
1: 15 - сервер определяет, что клиент ушел слишком долго, а затем забывает об этом, выстраивая в очередь команду "отключить" для получения клиентом если он подключится немного позже. ***
1:15 - OnDisconnected срабатывает
1: 16-клиент восстанавливает подключение
1: 17-клиент выполняет" мягкое " повторное подключение (не вызывает OnReconnected)
1: 18-клиент получает команду "disconnect"
1: 19-клиент вызывает "стоп" и делает мягкое отключение (не вызывает OnDisconnected)4)
0: 00-клиент подключается к серверу, OnConnected запускается
0:10 - клиент теряет подключение из-за вытягивания кабеля ethernet (не понимает, что он отключен)
0:~45-клиент осознает свою отключенность *
0:46 - клиент переходит в состояние повторного подключения
1: 15 - сервер определяет, что клиент ушел слишком долго, а затем забывает об этом, выстраивая в очередь команду "отключить" для получения клиентом, если он подключится немного позже. ***
1:15 - OnDisconnected срабатывает
1: 30-клиент прекращает попытки повторного подключения (тоже пытался долго) **
1: 30-клиент переходит в отключенное состояние* из-за клиентской стороны keep alive check:используется для определения, когда клиент находится в автономном режиме из-за отсутствия keep alives. Не используется для длительного опроса транспорта
* * из-за таймаута отключения на стороне клиента:используется для определения, когда клиент был повторно подключен слишком долго периода и скорее всего сервер забыл о клиенте во время время
* * * из-за таймаута отключения сервера:используется для определения того, когда клиент должен быть забыт. Это промежуток времени, который начинает накапливаться, как только соединение помечено как мертвое на сервере. В конечном счете сервер ставит в очередь команду disconnect для раздела клиента, которая сообщает клиенту (если он снова подключается), что ему нужно начать новое соединение. Команда исчезнет с сервера, когда тема будет очищена.
надеюсь, что это помогает!
Comments