#c# #websocket #signalr
#c# #websocket #signalr
Вопрос:
Я унаследовал приложение c # .net, которое взаимодействует с прокси-сервером-концентратором SignalR на другом сервере. Иногда соединение в приложении .net с прокси-сервером-концентратором теряется, и оно переходит в состояние повторного подключения ровно на две минуты всякий раз, когда это происходит. Я пробовал несколько разных способов попытаться сократить это время, но безуспешно. По истечении 2 минут он переключится с повторного подключения на подключенный, и связь возобновится.
Честно говоря, мне бы хотелось, чтобы эти соединения восстанавливались немедленно, но даже сокращение его с 2 минут значительно помогло бы в решении других проблем. Мне кажется странным, что это всегда ровно 2 минуты, но я не нашел, почему восстановление соединения с прокси-сервером-концентратором всегда занимает так много времени.
Принудительное создание соединения с помощью WebSocketTransport также не повлияло на это поведение.
В настоящее время он построен вокруг Microsoft.AspNet.SignalR, который должен автоматически переподключаться, но веб-узлы будут оставаться переподключенными в течение 2 минут, когда это произойдет. Затем ожидается следующее исключение, поскольку оно повторно подключается, но неясно, почему для повторного подключения всегда требуется 2 минуты.
«Данные не могут быть отправлены, поскольку повторно подключается соединение WebSocket»
Кроме того, если я отключу сервер SignalR и перезапущу его, он не будет повторно подключаться в течение 2 минут и сразу же подключится к повторно запущенному экземпляру. Это происходит, когда все запущено и запущено.
Комментарии:
1. Вы проверили конфигурацию подключения к клиенту? Вы можете определить параметры автоматического повторного подключения, как описано здесь
2. @kavanka это для варианта AspNetCore, который в настоящее время построен вокруг версии AspNet, и я не вижу, как изменить это 2-минутное поведение в этой версии.
Ответ №1:
Попробуйте это:
` var connection = new signalR.HubConnectionBuilder()
.withUrl('/WebLogHub')
.configureLogging(signalR.LogLevel.Debug)
.withAutomaticReconnect()
.build();`