0

我有一种情况,用户可以在线修改 Excel 等网格计划。我希望能够显示一条消息,说明计划正在另一个窗口中进行修改。但是,如何在打开窗口的情况下执行此操作,并且如果先前的窗口已使用 SignalR 关闭。对于其他会话,我只想说明另一个用户正在修改时间表。

4

1 回答 1

1

使用 localStorage 在单个用户打开的多个选项卡/窗口之间进行通信可能是最简单的:http: //www.codediesel.com/javascript/sharing-messages-and-data-across-windows-using-localstorage/

当您调用或时,您可以侦听用户在您网站上打开的每个窗口触发的存储事件。localStorage.setItemlocalStorage.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 回答