如何在SignalR连接中使用Session

时间:2012-09-28 19:11:32

标签: signalr

在我的数据库中,用户具有一些区域权限。 我想要做的是将这些区域添加到SignalR组中。 因此,当用户登录时,我从数据库中获取此组并保存在Session [" groups"]中,当用户连接到signalR时,我使用此会话添加组。 像这样:

public Task Connect()
{
    var groups = (string[])Session["groups"];
    foreach (var group in groups)
    {
        Groups.Add(Context.ConnectionId, group);
    }
}

我该怎么办?

1 个答案:

答案 0 :(得分:0)

如此处SignalR Hubs - Managing groups

所述
  

您可以向群组添加连接并向特定群组发送消息。组不会保留在服务器上,因此应用程序负责跟踪哪些组中的连接,以便可以实现组计数。

这意味着您必须提供自己的结构(如词典)来保存数据。

例如,一个字典用于将组名称作为键,区域列表作为值(或者如果它最适合您,则为相反的方式)。

因此,对于用户的每个新区域,首先更新此词典,然后将用户订阅到已更改的组。

Groups.Add(Context.ConnectionId, group);

尽管如此,请查看上面的链接以及此处Topic based pub sub design patern。不要因为标题上的WCF而犹豫不决。仔细研究他实现Filter类的方式