我很好奇SignalR如何将请求映射到Hub?
如何选择使用哪个Hub?请求中的集线器名称在哪里?
此外,它如何选择集线器中的哪个操作来处理请求?这是请求网址的一部分吗?
最后有没有办法进入这个管道(例如IActionFilter,IHubSelector,IActionSelector)?
答案 0 :(得分:2)
SignalR是开源的。你可以在这里找到你想要的大部分内容: https://github.com/SignalR/SignalR/tree/master/src/Microsoft.AspNet.SignalR.Core/Hubs
从此行开始传入频道:
祝你好运!答案 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
,然后通过依赖项解析器解析其类型属性。