3

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);
4

1 に答える 1

0

これは、Azure のトピック構成に関連しています。「パーティショニングを有効にする」でトピックを作成しました。多くのメッセージが欠落していました。現在、トピックは IOC によって作成されています。順調です。両方のインスタンスでテストしました。context.Clients.User は正常に動作します。

于 2015-02-17T09:15:12.840 に答える