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