我们如何发送通知来验证使用BackPlane的Signalr上的用户?

时间:2015-02-16 14:30:41

标签: signalr azureservicebus signalr-backplane

我们使用Azure Service Bus Topics作为signalR的背板,我们至少有2个Web实例。 我们想通过SignalR向特定用户发送通知。 我们在Web实例上使用“context.Clients.User”方法。

如果用户已连接到此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);

contex的使用ExchangeRate是Hub的派生类:

var user = _userService.FindById(orderBook.UserId);
        var context =GlobalHost.ConnectionManager.GetHubContext<ExchangeRate>();
        context.Clients.User(user.Email).deleteMyOrder(myOrder);

1 个答案:

答案 0 :(得分:0)

它与天蓝色的主题配置有关。我们使用&#34;启用分区&#34;来创建主题。我们错过了许多消息。现在,主题由IOC创建。它的工作正常。我已在两个实例上进行了测试。 context.Clients.User工作正常。