【问题标题】:SignalR Communicating Between HubsSignalR 在集线器之间进行通信
【发布时间】:2015-09-04 12:35:43
【问题描述】:

如何在两个独立的集线器之间进行通信?

所以 Hub1 是我的支持代理聊天中心,Hub2 是我的客户中心。 支持代理有登录名,客户有他们填写的创建用户的表格等等。但是,对于拥有 Hub1(支持代理)的所有用户,我如何将从 Hub2 创建的用户传递给 Hub1,或者有更好的方法吗?

我是否需要在 Hub1 中使用一些逻辑来区分客户和代理?

可能不可能,因为 Hub 不是静态的,它们是按用户创建的,对吗?

在一个 Hub 中完成所有操作的问题是,在填写完表单后,它会将它们发送到另一个页面,因此它们会获得一个新的 connectionId,并且它们没有 Context.User.Identity.Name,因此无法获取它们再次,因为我不知道新页面上的他们的信息。

【问题讨论】:

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


    【解决方案1】:

    您可以使用GlobalHost.ConnectionManager 在 Hub 之间进行通信:

    var ctx = GlobalHost.ConnectionManager.GetHubContext<HubName>();
    ctx.Clients.All.methodName(parameter);
    

    【讨论】:

    • 感谢您的回复!我将在本周末晚些时候对此进行调查
    • 刚刚有机会真正读到这篇文章。所以我可以通过这种方式从集线器 A 中获取集线器 B,然后像从 javascript(客户端)一样调用它的方法?
    • @Nathan 是的,现在您有了对中心的引用。
    • 我不确定这正是我要找的。我需要调用服务器代码而不是客户端代码。所以我需要从 Hub2 访问 Hub1 方法
    • 在 Hub2 中创建 Hub1 的实例可能符合我的目的,当然可以让我将客户添加到静态字典中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 2011-01-09
    相关资源
    最近更新 更多