在我的数据库中,用户具有一些区域权限。 我想要做的是将这些区域添加到SignalR组中。 因此,当用户登录时,我从数据库中获取此组并保存在Session [" groups"]中,当用户连接到signalR时,我使用此会话添加组。 像这样:
public Task Connect()
{
var groups = (string[])Session["groups"];
foreach (var group in groups)
{
Groups.Add(Context.ConnectionId, group);
}
}
我该怎么办?
答案 0 :(得分:0)
如此处SignalR Hubs - Managing groups
所述您可以向群组添加连接并向特定群组发送消息。组不会保留在服务器上,因此应用程序负责跟踪哪些组中的连接,以便可以实现组计数。
这意味着您必须提供自己的结构(如词典)来保存数据。
例如,一个字典用于将组名称作为键,区域列表作为值(或者如果它最适合您,则为相反的方式)。
因此,对于用户的每个新区域,首先更新此词典,然后将用户订阅到已更改的组。
Groups.Add(Context.ConnectionId, group);
尽管如此,请查看上面的链接以及此处Topic based pub sub design patern。不要因为标题上的WCF而犹豫不决。仔细研究他实现Filter类的方式