带负载均衡器的SignalR v2

时间:2014-10-22 19:03:58

标签: asp.net-mvc signalr

我是SignalR的新手,并且我已经完成了一些教程,因为我的任务是升级当前的实现。

我们有一个使用SignalR(版本1.x)的ASP.NET MVC应用程序。该应用程序位于我们的F5负载平衡云环境中。因此,我们使用相同的负载均衡器有多个站点(针对不同的客户)。要使SignalR调用服务器端,我们使用 Microsoft.ASPNET.SignalR.Client 命名空间中的HubConnection并创建这样的代理(完整示例here):

var hubConnection = new HubConnection("http://www.contoso.com/");
IHubProxy stockTickerHubProxy = hubConnection.CreateHubProxy("StockTickerHub");
stockTickerHubProxy.On<Stock>("UpdateStockPrice", stock => Console.WriteLine("Stock update for {0} new price {1}", stock.Symbol, stock.Price));
await hubConnection.Start();

http://contoso.com/是当前客户的网站网址。

我们正在寻求升级到最新的SignalR(版本2.x),我想知道是否有必要使用HubConnection。尽管上面的文章指定了版本2,但确实提到了:

  

本文档介绍如何在.NET客户端中使用适用于SignalR版本2的Hubs API,例如Windows Store(WinRT),WPF,Silverlight和控制台应用程序。

这是一个带有常规类库后端的Web应用程序,用于数据访问。看一下这个tutorial,我看不到有关HubConnection的任何信息(它也没有提到负载均衡)。从聊天教程中考虑以下内容:

public class ChatHub : Hub
{
    public void Send(string name, string message)
    {
        // Call the addNewMessageToPage method to update clients.
        Clients.All.addNewMessageToPage(name, message);
    }
}

然后,在 Statup.cs

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        // Any connection or hub wire up and configuration should go here
        app.MapSignalR();
    }
}

所以我的问题是,我们正确使用SignalR吗?如果没有,运行使用SignalR(v2.x)的负载均衡应用程序时需要进行哪些考虑/修改?我还没有找到关于负载平衡等方面的更多信息。

或者这是Groups的工作吗?

1 个答案:

答案 0 :(得分:2)

你不需要改变任何结构。查看signalr redis scaleout或任何其他横向扩展选项。基本上你需要安装一个额外的软件包和ms opentech redis来进行负载平衡。因此,scaleout将确保通过消息总线发送每个请求,从而使多个服务器成为可能。