Когда происходит повторное подключение в signalR?


Я начал работать с SignalR и пытался выяснить, когда происходит повторное подключение концентратора. Я не нашел никакого удовлетворительного объяснения в интернете. Может ли кто-нибудь объяснить, когда/почему происходит повторное подключение?

1   51   2013-01-22 14:05:17

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 для раздела клиента, которая сообщает клиенту (если он снова подключается), что ему нужно начать новое соединение. Команда исчезнет с сервера, когда тема будет очищена.

надеюсь, что это помогает!