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