【问题标题】:SignalR Join Group From ControllerSignalR 从控制器加入组
【发布时间】:2014-01-15 16:29:32
【问题描述】:

当用户登录我的网站时,他们会从下拉列表中选择他们所属的组。在登录回发时,当他们登录时,我想将他们分配到正确的 SignalR 组。

根据文档here,我可以通过以下方式加入它的客户端:

contosoChatHubProxy.server.joinGroup(groupName);

有没有办法从控制器分配组?我可以这样称呼 Hub:

var hub = new NotificationHub()
hub.JoinGroup(selectedGroup);

但是 hub 方法中的 Context 为空。这是可能的,还是我错误地处理了这个问题?谢谢你的建议。

【问题讨论】:

    标签: c# asp.net-mvc signalr signalr-hub


    【解决方案1】:

    您不应该像这样新建一个集线器;您可以像这样从外部代码获取集线器上下文并将用户添加到组中:

    var hubContext = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>();
    hubContext.Groups.Add(connectionId, groupName);
    

    【讨论】:

    • 这很有道理,但是你如何获得ConnectionID 服务器端?
    • 您必须将它从客户端传递给控制器​​。在 javascript 中是 $.connection.hub.id
    • 啊,好吧,这就是我需要知道的。非常感谢
    • @dfowler 所以无法从服务器获取 ConnectionId?
    • @GoldnArms 连接 id 和请求之间的自动关联仅在通过 SignalR 连接时存在(然后您可以通过 Caller.ConnectionId 获取);因此,例如,如果您向 Web API 端点发出常规 HTTP 请求,除非您在中明确传递该信息,否则无法知道调用者是哪个 SignalR 客户端
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    • 2018-12-25
    • 2012-12-04
    相关资源
    最近更新 更多