我正在开发一个需要在用户收到新通知时通知用户的应用程序。该应用程序将托管在 Azure 上,并且是 .NET MVC 3(可能不重要,但仅供参考)。我也
通知保存在 MSSQL db (2008) 中并有一个IsRead
字段。通知由各种用户和服务器操作生成。根据用户偏好,将使用IsRead == false
.
我有 2 种不同的场景,我觉得 SignalR 可以完美处理,我只需要一点指导:
- 用户打开了几个窗口浏览该站点,并添加了一个新的通知行,分配给该用户,其中
IsRead == true
- 我希望所有特定用户的浏览器实例都调用一个特定的 js 函数来显示弹出通知
- 用户打开了几个窗口并单击弹出的通知。
- 我希望所有特定用户的浏览器实例都调用一个特定的 js 函数来删除弹出通知。(只有处理点击的特定浏览器实例也会执行一个js函数来显示通知详情)
我试过的
对于第一种情况,我认为导致通知写入数据库的相同操作将负责通知所有用户的浏览器实例。
第二种情况类似,通过单击弹出窗口,将通过 Ajax 调用服务器端点,该端点将更新数据库以将通知标记为已读,然后通知所有其他用户的浏览器实例。
如果有一种方法可以基于 ASP.NET 表单身份验证用户名跟踪 SignalR 客户端,那么我认为这将有助于解决这两种情况下的问题。
TL;博士
我的主要问题是我不知道如何使用 SignalR 向所有特定用户的浏览器实例发出信号。我正在考虑根据 ASP.NET 表单身份验证用户名创建一个组。这行得通吗?SignalR 中是否有一种更简单的方法来处理这个问题?