我正在使用signalR创建一个项目,我想存储一些数据,例如:
Dictionary<string, string> UserAndConnectionId;
如果用户断开连接并重新连接,他的 connectionId 将会改变,我想根据他的激活组设置他的界面。
所以,我创建了这个类:Hub和一些函数:
public class MyClass: Hub
{
private Dictionary<MyFirstObject, List<MySecondObject>> _reference { get; set; }
private int _count;
[HubMethodName("onConnected")]
public override Task OnConnected()
{
Debug.WriteLine("OnConnected");
List<MySecondObject> userList;
_reference = new Dictionary<MyFirstObject, List<MySecondObject>>();
userList = new List<MySecondObject>();
userList.Add(new MySecondObject("userId", "userName", Context.ConnectionId));
_reference.Add(new MyFirstObject("groupName", null), userList);
_count++;
return base.OnConnected();
}
[HubMethodName("onDisconnected")]
public override Task OnDisconnected()
{
Debug.WriteLine("OnDisconnected");
return base.OnDisconnected();
}
[HubMethodName("onReconnected")]
public override Task OnReconnected()
{
Debug.WriteLine("OnReconnected");
return base.OnReconnected();
}
}
显然,每个新客户都会调用 onConnected 功能和
_reference = new Dictionary<MyFirstObject, List<MySecondObject>>();
每次都会删除所有数据。 所以我也尝试增加 int _count 。 当我读到 Debug.writeLine(“Count:”+ _count); 时,我发现每次都会重置 int _count 。
您是否有想暂时存储一些数据,例如MyClass中的 Dictionary<string, string>
?
答案 0 :(得分:4)
我在多个asp.net示例中找到了我的解决方案:
private static Dictionary<MyFirstObject, List<MySecondObject>> _reference { get; set; }
我只需要添加静态属性,让内存中的 _reference 可用,并抛出群组调用。
示例见于:asp.net/signalR 当作者谈到以下代码时:
private readonly static ConnectionMapping<string> _connections =
new ConnectionMapping<string>();
我希望它能帮助其他人:)