SignalR — как обнаружить сбой подключения/повторного подключения клиента (например, тайм-аут)

Как определить, когда клиенту не удается подключиться (или повторно подключиться) к концентратору Signalr?

Есть ли событие, которое срабатывает на клиенте js?


person Will    schedule 05.10.2012    source источник
comment
Извиняюсь, похоже на дубликат... .com/questions/10726453/   -  person Will    schedule 05.10.2012
comment
Похоже, я быстро прокомментировал свой собственный вопрос - реализовав это решение по ссылке выше, оно не запускает события, когда я останавливаю свой сигнальный сервер, в точках, которые я ожидал... любые идеи относительно лучших событий слушать?   -  person Will    schedule 05.10.2012


Ответы (1)


Отвечая на ваш второй комментарий:

В настоящее время в 0.5.3 SignalR не обрабатывает случай, когда сервер уходит. Однако это будет обработано в следующем выпуске 1.0alpha.

Временно я бы рекомендовал пинговать сервер каждые 5 секунд и проверять, не будет ли выполнен запрос. Если это не удается, скажем, 2 раза, скорее всего, сервер не работает, и вы можете справиться с логикой оттуда.

Если вы хотите увидеть, как мы это делаем в следующем выпуске, вот ссылка на функцию github: https://github.com/SignalR/SignalR/issues/469

person N. Taylor Mullen    schedule 05.10.2012
comment
Спасибо. Прочитав новую реализацию, Д. Фаулер написал следующее... На стороне клиента нам нужно выяснить, какое событие лучше всего и нужно ли отделять переподключение от keepAliveTimeout. Как разработчик, вы хотите написать отдельную логику для каждого или вам просто важно, чтобы ваше сетевое соединение исчезло. Сколько деталей нужно разработчику, чтобы принять решение для своего приложения. Если мы сохраняем событие отдельно, то я думаю, что нам нужно иметь событие более высокого уровня для соединения, которое в основном означает, что сеть отключена. Возможно, повторное подключение работает так же хорошо. - person Will; 05.10.2012
comment
Если у нас есть несколько блоков сигнализатора за балансировщиком нагрузки, было бы очень удобно, если бы ответ сигнализатора сообщал клиенту, что он понятия не имеет, кто они, поэтому они могут снова инициировать правильное соединение и подписаться на свои потерянные группы; Имеет ли это смысл? На данный момент, если клиент попадает на сервер, на котором он не существует, он не знает, что сервер понятия не имеет, от каких групп ему нужны сообщения. - person Will; 05.10.2012
comment
Что касается клиента, он хочет знать только, отключен ли он или повторно подключается и т. д. Однако в ситуациях, когда сервер не знает, кто такой клиент (и клиент утверждает, что сервер должен знать), сервер будет передавать клиенту команду отключения, чтобы заставить его выполнить полный запуск (переговоры и т. д.). В этой ситуации разработчик может написать логику для повторного присоединения X ко многим группам. Также имейте в виду, что в следующем релизе по умолчанию мы не разрешим автоматическое повторное присоединение к группам (проблема безопасности). Поэтому практика ведения их на клиенте - person N. Taylor Mullen; 05.10.2012
comment
станет более распространенным. Надеюсь это поможет. А вот ссылка на ошибку автоматического повторного присоединения: github.com/SignalR/SignalR/issues/525 - person N. Taylor Mullen; 05.10.2012
comment
Это звучит как намного лучшее решение - спасибо за подробности. С нетерпением жду релиза 1.0alpha... - person Will; 06.10.2012