繁体   English   中英

SignalR通过Azure Service Bus

[英]SignalR via Azure Service Bus

设置SignalR以使用Azure Service Bus时,我必须遗漏一些东西。 我有我的App Service(API - Web API 2)设置来运行3个常量实例(当前),启动时,API使用Service Bus连接字符串并设置适当的主题前缀。

在前端,SignalR能够连接到我的API,但消息有时仅由客户端接收。 我的假设是客户端只接收来自它最初连接的服务器的消息。 这让我相信SignalR没有正确使用服务总线。 通过Azure查看服务总线时,我确实看到正在创建主题,但其中没有任何消息(我也看到订阅)。

所以,据我所知,客户端和服务器之间的SignalR仍然使用直接连接而不是通过服务总线。 请注意, 客户端正在使用API​​的URL来进行SignalR连接 - 这是正确的吗?

SignalRConfig (在app启动期间。)

var serviceBusConnectionString = configHelper.SignalR.ServiceBusConnectionString;
var serviceBusTopicPrefix = configHelper.SignalR.TopicPrefix;

Logger.Info("SignalR: configuring");

// Use the service bus, if specified.
if (serviceBusConnectionString != null && serviceBusTopicPrefix != null) {
    Logger.Info("SignalR: using service bus");

    GlobalHost.DependencyResolver.UseServiceBus(serviceBusConnectionString, serviceBusTopicPrefix);
}

app.MapSignalR();

上面的代码针对每个实例运行,我不知道这是否正确。 也许这就是我看到多个主题的原因,例如signalr_topic_my-app-staging_0 - 0到5。

请注意,我试图遵循这个(过时的)教程: https//docs.microsoft.com/en-us/aspnet/signalr/overview/performance/scaleout-with-windows-azure-service-bus

您的代码似乎正确,它应该为每个实例运行。

Service Bus中应该有6个主题:signalr_topic_ {TOPIC_PREFIX} _0到signalr_topic_ {TOPIC_PREFIX} _5。

每个实例是否使用相同的主题前缀名称? 如果他们使用不同的主题名称,那么这将解释您所看到的行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM