我们如何发送通知以在使用 BackPlane 的 Signalr 上对用户进行身份验证?
How can we send notifcation to authenticate user on Signalr which uses BackPlane?
我们使用 Azure 服务总线主题作为 signalR 的背板,我们至少有 2 个 Web 实例。
我们想使用 SignalR 向特定用户发送通知。
我们正在 Web 实例上使用 "context.Clients.User" 方法。
如果用户连接到此 Web 实例并通过身份验证,he/she 会收到通知。
问题是:如果用户在其他网络实例上进行了身份验证,这将不起作用。
我们如何向另一个网络实例上的用户发送通知?
我们正在使用 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 的用法源自 class 来自集线器:
var user = _userService.FindById(orderBook.UserId);
var context =GlobalHost.ConnectionManager.GetHubContext<ExchangeRate>();
context.Clients.User(user.Email).deleteMyOrder(myOrder);
与azure上的topic配置有关。我们用 "enable partitioning" 创建了一个主题。我们遗漏了很多 messages.Now,主题是由 IOC 创建的。它工作正常。我已经在这两个实例上进行了测试。 context.Clients.User 工作正常。
我们使用 Azure 服务总线主题作为 signalR 的背板,我们至少有 2 个 Web 实例。 我们想使用 SignalR 向特定用户发送通知。 我们正在 Web 实例上使用 "context.Clients.User" 方法。
如果用户连接到此 Web 实例并通过身份验证,he/she 会收到通知。
问题是:如果用户在其他网络实例上进行了身份验证,这将不起作用。
我们如何向另一个网络实例上的用户发送通知?
我们正在使用 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 的用法源自 class 来自集线器:
var user = _userService.FindById(orderBook.UserId);
var context =GlobalHost.ConnectionManager.GetHubContext<ExchangeRate>();
context.Clients.User(user.Email).deleteMyOrder(myOrder);
与azure上的topic配置有关。我们用 "enable partitioning" 创建了一个主题。我们遗漏了很多 messages.Now,主题是由 IOC 创建的。它工作正常。我已经在这两个实例上进行了测试。 context.Clients.User 工作正常。