【问题标题】:signalR passing objects to hubsignalR 将对象传递到集线器
【发布时间】:2013-03-19 08:29:30
【问题描述】:

我需要能够以某种方式将 List<string>(加载到我的控制器中)与 HUB 中生成的 connectionId 关联起来。

在我的 MVC 应用程序中,我有一个用一些数据填充 List<string> 的操作。加载页面后,在我的 Hub 中执行 OnConnected 方法,其中会生成一个新的ConnectionId。我想将 ConnectionId 与 myList<string> 关联起来。

由于 OnConnected 是在操作完成后执行的,我不相信还有其他方法可以做到这一点。有吗?

如何将列表(或其他对象)传递到我的集线器,以便与特定的 ConnectionId 相关联?

谢谢

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 signalr signalr-hub


    【解决方案1】:

    不要将数据传递到您的中心,而是从您的中心接收数据。

    因此,例如,您可以使用静态字典/列表让两者相互引用:

    public class MyHub : Hub
    {
        public override OnConnected()
        {
            MyController.Associate(Context.ConnectionId);
        }
    }
    
    public class MyController
    {
        public static ConcurrentDictionary<string, List<string>> cidToList = new ConcurrentDictionary<string, List<string>>();
        public static List<string> mylist = new List<string>();
    
        public static void Associate(string cid)
        {
            cidToList.TryAdd(cid, mylist);
        }
    }
    

    【讨论】:

    • 行得通。我假设最后一个 connectionId 将分配给 LAST List object
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多