0

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

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

我该怎么做?

4

1 回答 1

0

如此处所述SignalR Hubs - 管理组

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

这意味着您必须提供自己的结构,例如字典来保存您的数据。

例如,一个字典,将组名作为键,将区域列表作为值(或者如果它最适合您,则反过来)。

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

Groups.Add(Context.ConnectionId, group);

不过,请查看上面的链接以及此处基于 Topic 的 pub sub design patern。不要因为标题上的 WCF 而犹豫。仔细看看他实现 Filter 类的方式

于 2012-11-06T07:26:01.270 回答