0

HuContext から (つまり、別のクライアントではなくサーバーから) シグナル メッセージを送信しようとすると、次のエラーが表示されます。これは私の元のプロトタイプでは機能していましたが、 Backplane を実装してから機能しなくなりました:

メソッドが見つかりません: 'Microsoft.AspNet.SignalR.Hubs.IHubConnectionContext Microsoft.AspNet.SignalR.IHubContext.get_Clients()'.

Hub クラスにいくつかの静的メソッドを作成して、処理中の SignalR メッセージの起動を容易にしました (私が見つけた例に従います)。Hub クラスは現在、次のようになっています (簡潔にするために同様のメソッドは削除されています)。

public class ImportFilesHub : Hub
{
    public void ImportFileProgressChanged(ImportFileProgressChangedNotification notification)
    {
        Clients.All.ImportFileProgressChanged(notification);
    }            

    public static void HubImportFileProgressChanged(ImportFileProgressChangedNotification notification)
    {
        IHubContext context = GlobalHost.ConnectionManager.GetHubContext<ImportFilesHub>();
        context.Clients.All.importFileProgressChanged(notification);
    }        
}

このエラーが発生する理由は、バックプレーンを使用するときにこのタイプの要件にアプローチする方法が間違っているためだと思われます (プロトタイプで機能したため)。これをやっています。

SignalR クライアント クラスをサーバーに追加して、クライアントと同じように接続できると思いますが、それは非常に洗練されたアプローチとは思えません。

4

0 に答える 0