我有一种情况,用户可以在线修改 Excel 等网格计划。我希望能够显示一条消息,说明计划正在另一个窗口中进行修改。但是,如何在打开窗口的情况下执行此操作,并且如果先前的窗口已使用 SignalR 关闭。对于其他会话,我只想说明另一个用户正在修改时间表。
问问题
282 次
1 回答
1
使用 localStorage 在单个用户打开的多个选项卡/窗口之间进行通信可能是最简单的:http: //www.codediesel.com/javascript/sharing-messages-and-data-across-windows-using-localstorage/
当您调用或时,您可以侦听用户在您网站上打开的每个窗口触发的存储事件。localStorage.setItem
localStorage.removeItem
当然,使用 SignalR 通知其他用户仍然有意义。
如果由于某种原因无法使用 localStorage API,您仍然可以使用 SignalR 向用户Clients.User(userName)....
在 Hub 内使用打开的每个窗口发送消息。默认情况下,userName
应该与您的用户匹配IPrincipal.Identity.Name
,但您可以注册自己IUserIdProvider
的自定义:http ://www.asp.net/signalr/overview/signalr-20/hubs-api/mapping-users-to-connections#IUserIdProvider
于 2014-07-08T02:49:54.553 回答