SignalR のバックプレーンとして Azure Service Bus トピックを使用しており、少なくとも 2 つの Web インスタンスがあります。SignalR を使用して特定のユーザーに通知を送信したいと考えています。Web インスタンスで「context.Clients.User」メソッドを使用しています。
ユーザーがこの Web インスタンスに接続され、認証されている場合、ユーザーは通知を受け取ります。
問題は、ユーザーが他の Web インスタンスで認証されている場合、これが機能しないことです。
別の Web インスタンスのユーザーに通知を送信するにはどうすればよいですか?
Autofac.SignalR と SignalR.ServiceBus を使用しています
IOC 構成:
var builder = new ContainerBuilder();
.
.
.
.
.
Container = builder.Build();
RegisterGlobalCommonServiceLocator();
var resolver = new AutofacWebApiDependencyResolver(Container);
GlobalConfiguration.Configuration.DependencyResolver = resolver;
DependencyResolver.SetResolver(new AutofacDependencyResolver(Container));
var connectionString = ConfigurationManager.AppSettings["SignalRBrokerServiceBus"];
var appName = ConfigurationManager.AppSettings["SignalRApplicationName"];
GlobalHost.DependencyResolver = new Autofac.Integration.SignalR.AutofacDependencyResolver(Container);
var scaleOutConfig = new ServiceBusScaleoutConfiguration(connectionString, appName);
GlobalHost.DependencyResolver.UseServiceBus(scaleOutConfig);
コンテックス ExchangeRate の使用法は、ハブから派生したクラスです。
var user = _userService.FindById(orderBook.UserId);
var context =GlobalHost.ConnectionManager.GetHubContext<ExchangeRate>();
context.Clients.User(user.Email).deleteMyOrder(myOrder);