0

SignalR が要求をハブにマップする方法に興味がありますか?

使用するハブをどのように選択しますか? リクエスト内のハブの名前はどこにありますか?

さらに、ハブ内のどのアクションがリクエストを処理するかをどのように選択するのでしょうか? それはリクエスト URL の一部ですか?

最後に、このパイプラインを利用する方法はありますか (IActionFilter、IHubSelector、IActionSelector など)?

4

2 に答える 2

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、その型プロパティが依存関係リゾルバーによって解決されます。

于 2013-09-12T05:24:39.270 に答える
2

SignalR はオープン ソースです。ここで探しているもののほとんどを見つけることができます: https://github.com/SignalR/SignalR/tree/master/src/Microsoft.AspNet.SignalR.Core/Hubs

着信チャネルの次の行から開始します。

https://github.com/SignalR/SignalR/blob/master/src/Microsoft.AspNet.SignalR.Core/Hubs/HubDispatcher.cs#L145

幸運を!

于 2013-09-10T05:43:49.390 に答える