【问题标题】:How can we send notifcation to authenticate user on Signalr which uses BackPlane?我们如何发送通知以在使用 BackPlane 的 Signalr 中对用户进行身份验证?
【发布时间】:2015-04-17 02:17:44
【问题描述】:

我们使用 Azure 服务总线主题作为 signalR 的背板,并且我们至少有 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);

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

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

【问题讨论】:

  • 背板配置代码?

标签: signalr azureservicebus signalr-backplane


【解决方案1】:

与azure上的主题配置有关。我们用“启用分区”创建了一个主题。我们错过了许多消息。现在,主题是由国际奥委会创建的。它工作正常。我已经在这两种情况下进行了测试。 context.Clients.User 工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    相关资源
    最近更新 更多