使用静态方法将消息分组并发送给客户端

时间:2013-11-26 15:33:42

标签: c# signalr static-methods signalr-hub object-reference

我有一个类GroupManager,在此过程中我想将人们分组并从静态方法向他们发送消息,是否可能?

这是我的班级GroupManager

public class GroupManager: Hub
{
    // The dictionnary contains <userName, conectionId>
    private static Dictionary<string, string> _reference { get; set; }

    private static void CreateRoom(string roomName)
    {
        foreach (var user in _reference)
        {
            // error
            Groups.Add(user.Value, roomName);
            Clients.Group(roomName).sendMessageToClient("user connected : " + user.Key);
        }
    }
}

当我致电 Groups.Add ...

有一个错误:

  

非静态字段,方法或属性

需要对象引用

Clients.Group ...

相同的错误

我理解这个问题,但我不知道如何获得Hub的对象引用。

由于

编辑:

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:1)

为什么要将CreateRoom设为静态?如果它在静态数据上运行,则不需要它是静态的(并且通过使其静态,它不能对实例数据进行操作)。

如果您需要从集线器外部访问集线器,请参阅以下内容:

http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-server#callfromoutsidehub

答案 1 :(得分:0)

从字典属性和CreateRoom方法中删除关键字“static”。

静态方法无法对实例数据进行操作,这就是问题所在。

相关问题