3

SignalR wikiは、ハブの外部からハブを介してブロードキャストする方法をカバーしています。ただし、これはクライアント側の操作を呼び出します。

var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
context.Clients.Group(group).addMessage(message);

理想的には強く型付けされた方法でハブ操作を呼び出す方法はありますか?例えば

GetHubContext<MyHub>().Invoke(h => h.Say(message))

.NETクライアントを使用してハブに接続することでこれが可能であることはわかっていますが、呼び出し元のコードがハブと同じサーバー上にある場合、これは間違っているようです。

4

3 に答える 3

5

パーティーに少し遅れましたが、はい、あります。

stocktickerサンプルnugetパッケージはこれを行います( 完全に使用しているわけではありませんが!):

基本的に、呼び出しを行うサーバー側ハブの静的インスタンスを公開します。

サンプルでは、​​パターンは次のとおりです。

public class StockTicker
{
    // Singleton instance
    private readonly static Lazy<StockTicker> _instance = new Lazy<StockTicker>(
        () => new StockTicker(GlobalHost.ConnectionManager.GetHubContext<StockTickerHub>().Clients));

...


    public static StockTicker Instance
    {
        get
        {
            return _instance.Value;
        }
    }

..。

これにより、いつでもどこからでも呼び出すことができます!:

StockTicker.Instance.OpenMarket();

同じ例は、 asp.netサイトのブログ投稿でも取り上げられています。

于 2014-01-21T15:29:01.077 に答える
1

いいえ。これは、サーバー側からMVCコントローラーを呼び出そうとするようなものです(実行しないでください)。共通ロジックを共有ヘルパーに移動し、ハブと他のサーバー側のコードの両方からそのヘルパーを呼び出すだけです。

于 2012-12-22T16:43:33.247 に答える
0

ご覧ください: https ://github.com/ieb/SignalR-TypeSafeClient

このライブラリを使用できます。

ティズ

于 2014-08-30T10:46:42.147 に答える