【问题标题】:SignalR backplane expected behaviorSignalR 背板预期行为
【发布时间】:2022-01-02 19:57:47
【问题描述】:

我正在创建一个新的 SignalR(.net 核心)背板,我对背板的预期行为有点困惑。

  • 全部发送:这仅限于一个集线器类型内的所有集线器还是整个​​网络中任何类型的所有集线器?
  • 发送到群组:类似问题。我应该只发送到集线器类型内的组吗?还是应该按名称向群组的所有订阅者发送群组消息 - 无论源集线器类型还是目标集线器类型?
  • 发送给用户:也是类似的问题。无论集线器类型如何,我都应该将消息发送给用户的所有实例吗?还是应该限制仅发送给源集线器类型的相同用户实例?

【问题讨论】:

    标签: signalr asp.net-core-signalr signalr-backplane


    【解决方案1】:

    HubLifetimeManager 类是泛型的,集线器类型为泛型。因此,您实现的方法仅适用于特定的集线器类型。

    【讨论】:

    • 查看 Microsoft.AspNetCore.SignalR.StackExchangeRedis 背板的源代码似乎可以证实这一点。
    【解决方案2】:

    我想我在Microsoft.AspNetCore.SignalR.StackExchangeRedis 背板的源代码中找到了我的问题的答案。

    似乎所有消息通道都以集线器的 type.FullName 为前缀。所以 send-all、send-to-group 和 send-to-user 消息总是限定在 Hub 类型的范围内进行发送。

    因此,所有消息始终(且仅)由相同类型的集线器接收。并且从其他集线器类型发送的任何消息都不会被所述集线器接收!

    如果我对此有误,请纠正我。错误的范式会对我的背板造成严重破坏。我希望在完成后尽快公开。

    【讨论】:

      猜你喜欢
      • 2016-04-18
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 2021-07-13
      • 2019-11-28
      • 2020-04-30
      • 2017-01-12
      • 2017-06-19
      相关资源
      最近更新 更多