При потере соединения SignalR с прокси-сервером-концентратором всегда остается в состоянии повторного подключения в течение 2 минут

#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();`