Сервер Blazor сохраняет соединение SignalR с базой данных для предотвращения потери?

#server #signalr #blazor

Вопрос:

Соединение SignalR-это соединение между сервером и пользователем, которое «хранится» в памяти сервера.

Есть несколько сценариев, в которых SignalR теряется, и пользователю необходимо перезагрузить страницу.

  1. Когда мне нужно перезапустить сервер
  2. Когда пользователь отключает свой телефон и возвращается на сайт через некоторое время

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

Ответ №1:

Вам не нужно сохранять соединение. Что вам нужно сохранить, так это состояние сеанса приложения/пользователя. Ознакомьтесь с этой статьей ниже:

https://docs.microsoft.com/en-us/aspnet/core/blazor/state-management?view=aspnetcore-5.0amp;pivots=server

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

Ответ №2:

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