【发布时间】:2013-09-12 14:30:03
【问题描述】:
我很好奇 SignalR 如何将请求映射到 Hub?
它如何选择要使用的集线器?请求中的中心名称在哪里?
此外,它如何选择集线器中的哪个操作来处理请求?那是请求 url 的一部分吗?
最后有没有办法利用这个管道(例如,IActionFilter、IHubSelector、IActionSelector)?
【问题讨论】:
标签: c# .net signalr signalr-hub signalr.client
我很好奇 SignalR 如何将请求映射到 Hub?
它如何选择要使用的集线器?请求中的中心名称在哪里?
此外,它如何选择集线器中的哪个操作来处理请求?那是请求 url 的一部分吗?
最后有没有办法利用这个管道(例如,IActionFilter、IHubSelector、IActionSelector)?
【问题讨论】:
标签: c# .net signalr signalr-hub signalr.client
SignalR 是开源的。您可以在此处找到您要查找的大部分内容: https://github.com/SignalR/SignalR/tree/master/src/Microsoft.AspNet.SignalR.Core/Hubs
从该行开始输入通道:
祝你好运!
【讨论】:
它通过以下方式获取集线器的类型:
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,然后通过依赖解析器解析其类型属性。
【讨论】: