【问题标题】:SignalR request pipeline, Hub lifetimeSignalR 请求管道,集线器生命周期
【发布时间】:2014-07-22 15:31:07
【问题描述】:

我正在使用 asp.net webapi 开始使用 signalR,并且我试图了解整个 signalR 请求/连接管道以及集线器的生命周期以及创建和处置集线器实例的人(是否在每个客户端和服务器之间的通信?)

其中一个原因是我们需要了解我们应该如何在 signalR 请求场景中使用 IoC 包含,我们如何控制依赖项的生命周期,特别是 ISessionDBContext

【问题讨论】:

    标签: signalr signalr-hub


    【解决方案1】:

    Hubs 实例是在来自客户端的每个请求时创建的。它们没有被保留,因此您不应该在其中放置任何状态。

    集线器是通过工厂系统创建的,您可以通过其内置的dependency injection mechanism 进行自定义。

    【讨论】:

    • 所以将 ISession 的生命周期限定为集线器实例应该没问题吧?它将在请求结束时处理。
    • 除非您通过自定义其创建过程(您可以这样做)自己“弄乱”集线器的生命周期,否则我会说是的。
    • 每一个请求,你的意思是每一个信号员信息吗?还是每个连接?
    • @CamHart 每个 SignalR 消息。
    • @shatl 可能,但 IMO 你不应该这样做