Подтвердить что ты не робот

SignalR с ненадежными или приостановленными и повторно подключенными соединениями?

Я рассматриваю возможность обновления существующего сайта для использования SignalR. Мой сайт опроса сторонних служб для изменения данных, делает некоторые магии на нем, и клиенты опроса его один раз каждые несколько минут, чтобы обновить их просмотра с любыми обновлениями.

SignalR кажется отличным способом устранения опроса у клиента, но я хочу знать, как SignalR обрабатывает удаленные и повторно подключенные соединения, особенно в отношении мобильных веб-приложений, которые могут быть приостановлены на некоторое время. Будет ли он автоматически согласовывать и помещать в очередь все обновления, которые были пропущены в это время, или же клиент должен пересинхронировать с нуля в этих случаях? Я смотрел, но не мог найти никаких документов по этому поводу, поэтому руководство было бы оценено.

4b9b3361

Ответ 1

Все это, безусловно, возможно, так как клиент отслеживает последний идентификатор сообщения, который он видел. Если это случилось с пропущенными сообщениями, он получит их в следующий раз, когда он вернется на сервер (с запросом на все сообщения с момента последнего просмотра).

По умолчанию серверная часть SignalR хранит сообщения в памяти (и очищает их каждые несколько секунд), но вы можете изменить ее, чтобы она сохранялась в каком-то постоянном хранилище (см. IMessageStore), если вы думаете о том, что клиенты переходят в автономный режим и догоняют.

Вы даже можете сохранять сообщения самостоятельно в своей собственной логике приложений, в то время как SignalR хранит материал в памяти. Это действительно зависит от приложения.

Мы не добавили специальной поддержки для мобильных клиентов, но вы можете сохранить идентификатор сообщения в любом локальном хранилище, который вам нужен для вашего мобильного клиента.

Эти детали не очень специфичны, но то, что вы хотите сделать, возможно с помощью SignalR.

Ответ 2

Прочитайте Понимание и обработка событий продолжительности жизни в SignalR, особенно эти разделы:

  • Как постоянно подключаться - требуется восстановить из отключенного состояния;
  • Как уведомить пользователя об отключении - поэтому ваше приложение может не только информировать пользователя, но и обнаруживать изменения состояния (отключенные, повторно подключенные, повторно подключенные), чтобы обновить состояние вашего приложения другими способами.

Этот документ был написан в 2014 году и в основном убирает многие неправильные или неполные вопросы/ответы, связанные с StackOverflow SignalR, начиная с эпохи 2011-2012 годов.