是否可以将Azure SignalR服务与本地SignalR结合使用?

问题描述

我们正在评估Azure SignalR服务,以潜在地替换我们当前的本地SignalR服务。我们正在使用.Net Core 2.2.402

我们尝试了以下操作:

services.AddSignalR();
services.AddSignalR().AddAzureSignalR(Configuration["Azure-SignalR:Connection-String"]);

并定义了路线和枢纽,如下所示:

            app.UseAzureSignalR(route =>
            {
                route.MapHub<QueueHub>("/queue");
            });
            app.UseSignalR(route =>
            {
                route.MapHub<MessagesHub>("/message");
            });

理想情况下,我们希望在同一个Web App中使用两者,但它似乎仅适用于其中一个

解决方法

使用Azure SignalR时,当客户端启动与服务器的连接时,您的.NET CORE应用会将连接重定向到Azure,因此使用Azure SignalR处理该连接,您只需提供逻辑中心本身。当您执行services.AddSignalR().AddAzureSignalR(...)时,似乎只有信号R的第一个注册被第二条语句覆盖,这可能是您不能同时使用两者的原因。