【发布时间】:2017-10-07 05:30:53
【问题描述】:
在设置 SignalR 以使用 Azure 服务总线时,我一定遗漏了一些东西。我有我的应用服务(API - Web API 2)设置来运行 3 个常量实例(当前),在启动时,API 使用服务总线连接字符串并设置适当的主题前缀。
在前端,SignalR 能够连接到我的 API,但客户端有时只会收到消息。我的假设是客户端只接收来自它最初连接的服务器的消息。这让我相信 SignalR 没有正确使用服务总线。通过 Azure 查看服务总线时,我确实看到正在创建主题,但其中没有任何消息(我还看到订阅)。
所以,据我所知,客户端和服务器之间的 SignalR 仍然使用直接连接,而不是通过服务总线。请注意,客户端正在使用 API 的 URL 进行 SignalR 连接——这是正确的吗?
SignalRConfig(在应用启动期间。)
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
【问题讨论】:
-
您使用的是哪个 nuget 包?本教程中的 nuget 包已弃用。您应该使用 Microsoft.AspNet.SignalR.ServiceBus
-
最新的
Microsoft.*.SignalR*,如果需要可以给出具体的,我回到我的电脑前。
标签: javascript c# azure signalr azureservicebus