Обходной путь для отсутствия событий ConnectionSlow, Reconnecting и StateChanged в SignalR Core? - PullRequest
0 голосов
/ 25 января 2019

Я обновляю проект с SignalR до SignalR Core и столкнулся со следующей проблемой. Я не вижу способа для .NET-клиента быстро обнаружить, что он был отключен от сервера. Это происходит, когда веб-служба перезапускает свой пул приложений. Клиенту .NET Core требуется 90 секунд, чтобы обнаружить это с помощью события HubConnection.Closed.

В оригинальном SignalR это происходило мгновенно через ряд событий, таких как HubConnection.ConnectionSlow, HubConnection.Reconnecting или HubConnection.StateChanged.

Я не вижу ни одного из этих событий в последней стабильной версии SignalR Core 1.0.1. Я пытался отслеживать изменения в свойстве HubConnection.State, но, похоже, оно отражает событие HubConnection.Closed, а также обновление занимает 90 секунд.

Каковы рекомендуемые обходные пути для более быстрого обнаружения изменения соединения? Нужно ли мне внедрять свою собственную систему сообщений для поддержки активности?

1 Ответ

0 голосов
/ 29 января 2019

В итоге проблема оказалась в перезапуске app_pool, который занял 90 секунд, чтобы закрыть старый app_pool. Это означало, что соединение SignalR было действительно живым в течение этого времени, поэтому клиенты не могли обнаружить разрыв соединения. Быстрый обходной путь - изменить следующую настройку со значения по умолчанию 90 секунд на меньшее время ожидания (в моем случае 30 секунд):

[application pool] > Right Click > Advanced Settings > Shutdown Time Limit (seconds) > 30
...