SignalR如何将请求映射到集线器?

时间:2013-09-09 20:47:06

标签: c# .net signalr signalr-hub signalr.client

我很好奇SignalR如何将请求映射到Hub?

如何选择使用哪个Hub?请求中的集线器名称在哪里?

此外,它如何选择集线器中的哪个操作来处​​理请求?这是请求网址的一部分吗?

最后有没有办法进入这个管道(例如IActionFilter,IHubSelector,IActionSelector)?

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

通过以下方式获取集线器的类型:

IAssemblyLocator,返回相关的程序集。

SignalR比询问所有传递类型的程序集:

private static bool IsHubType(Type type)
    {
      try
      {
        return typeof (IHub).IsAssignableFrom(type) && !type.IsAbstract 
                 && (type.Attributes.HasFlag((Enum) TypeAttributes.Public) 
                 || type.Attributes.HasFlag((Enum) TypeAttributes.NestedPublic));
      }
      catch
      {
        return false;
      }
    }

然后使用传递上述条件的类型来创建IHubDescriptors,然后通过依赖项解析器解析其类型属性。