SignalR и одно окно браузера для сеанса одновременно

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

1 ответ

Решение

Возможно, проще всего использовать localStorage для связи между несколькими вкладками / окнами, открытыми у одного пользователя: http://www.codediesel.com/javascript/sharing-messages-and-data-across-windows-using-localstorage/

Вы можете прослушивать событие хранения, которое срабатывает в каждом окне, которое пользователь открывает на вашем сайте, когда вы звоните localStorage.setItem или же localStorage.removeItem,

Конечно, все равно имеет смысл использовать SignalR для уведомления других пользователей.

Если по какой-то причине вы не можете использовать API localStorage, вы все равно можете использовать SignalR для отправки сообщения в каждое окно, открытое пользователем с помощью Clients.User(userName).... внутри вашего хаба По умолчанию, userName должен соответствовать вашему пользователю IPrincipal.Identity.Name, но вы можете зарегистрировать свой собственный IUserIdProvider чтобы настроить это: http://www.asp.net/signalr/overview/signalr-20/hubs-api/mapping-users-to-connections

Другие вопросы по тегам