клиент постоянно переподключается

Мое приложение .net, которое подключается к сигнальному концентратору, постоянно переподключается.

Эта проблема возникает только в некоторых других корпоративных сетях, что заставляет меня думать, что что-то блокируется. Я пытался использовать веб-сайт jabbr.net из той же сети, и это тоже не работает (в хроме).

Как я могу отследить/исправить эту проблему?

введите здесь описание изображения


person UnreliableWitness    schedule 21.02.2013    source источник


Ответы (2)


Я думаю, что вы столкнулись с этой проблемой https://github.com/SignalR/SignalR/pull/1553. . Мы работаем над исправлением этого. Проблема возникает, когда сервер отправляет запросы на события по истечении времени ожидания, но фактические HTTP-запросы все еще выполняются. Затем происходит то, что транспорт с длительным опросом и сервер, отправляемые HTTP-запросы, борются за соединение.

Чтобы обойти это, вы можете конкретно указать LongPollingTransport. Мы постараемся исправить это в следующем выпуске.

person davidfowl    schedule 21.02.2013
comment
У меня такая же проблема с клиентом .NET signalr версии 2.2.1.0 в .NET 4.0. Я запускаю клиент, устанавливая SSE в качестве протокола. Когда происходит то, что описывает @davidfowl, клиент выполняет бесконечную последовательность подключения, удаления, остановки и немедленного повторного подключения, удаления, остановки. Я не вижу переключения клиента между LongPollingTransport и SSE — он просто остается с SSE. После запуска клиента я присоединяю ContinueWith для обнаружения исключений/ошибок задачи. IIRC, удаление ContinueWith помогло в какой-то момент, но мне нравится его сохранять, и я не хочу обрабатывать исключения вокруг Task.wait(). - person StackUndefined; 20.11.2016
comment
Если вы укажете транспорт, он не будет отступать. - person davidfowl; 21.11.2016
comment
Странно, как я получаю эту проблему только тогда, когда я DO указываю ClientTransport (либо ServerSentEventsTransport, либо LongPollingTransport) перед запуском HubConnection. Что может быть причиной этого? - person Nii Laryea; 23.01.2018

Для вашего сервера в разделе system.diagnostics вашего web.config добавьте:

<sharedListeners>
  <add name="SignalR" 
       type="System.Diagnostics.TextWriterTraceListener" 
       initializeData="signalr.log.txt" />
</sharedListeners>

Для вашего клиента (я предполагаю, что .net C#) его ведение журнала осуществляется через Debug.Writes. Кроме того, я бы рекомендовал подключиться к обработчику ошибок для вашего соединения.

Если вы используете клиент JS, вы можете включить вход через

// Non dynamically made connection
connection.logging = true;
// Dynamically made connection
$.connection.hub.logging = true

Надеюсь это поможет!

person N. Taylor Mullen    schedule 21.02.2013