SignalR Scale Out Options

SignalR is a free and open-source software library for Microsoft ASP.NET that allows server code to send asynchronous notifications to client-side web applications.

Load Balancing your Web Servers for CTI and Chat

A scale out operation is the equivalent of creating multiple copies of your web site and adding a load balancer to distribute the demand between them. When you scale out a web there is no need to configure load balancing separately since this is already provided by the platform.

The SignalR library includes server-side and client-side JavaScript components. Assuming your server meets the prerequisites, your SignalR should be configured. Please see below for the prerequisites:

SignalR takes advantage of several transports, automatically selecting the best available transport given the client's and server's capabilities. SignalR takes advantage of WebSocket, an HTML5 API that enables bi-directional communication between the browser and server. SignalR will use WebSockets under the covers when it's available, and gracefully fall back to other techniques and technologies when it isn't, while the application code remains the same.

SignalR also provides a simple, high-level API for doing server-to-client RPC (call JavaScript functions in a client's browser from server-side .NET code) in an ASP.NET application, as well as adding useful hooks for management, such as connect/disconnect events, grouping connections, authorization.

For more information about SignalR, for the more technologically inclined System Administrators, you can read an interesting article here:

Please note: Alemba is in no way affiliated with the above and the link is provided as a courtesy. We are not responisble for the content of external sites. Please use them at your discretion understanding we make no warranty of the information held there.

SignalR Scale Out Options in ASM

  • Do Not Scale Out

  • Scale Out Via SQL Server

  • Scale Out Via Service Bus

Do Not Scale Out

This is the default setting, and likely the only one you will ever need. Larger organizations however, may find that balancing is necessary. For example, organizations with 500 or more agents working concurrently in chat or using CTI, may need some scaling.

Scale Out Via SQL Server (On Premise)

If you choose to Scale out via SQL server, you are essentially selecting to use SQL as your option. This is appropriate for on premise customers.

Scale Out via Service Bus

For Azure clients (Hosted ASM solutions), you will scale using a Service Bus.

  1. Create a Service Bus in the Azure Portal

  2. Create a topic in that Service Bus

  3. Get the connection string by accessing the Service Bus "Shared Access Policies"

  4. Click "RootManageAccessKey"

  5. Copy the "Primary Connection String" value

  6. Enter this is the Service Bus Connection String field

  7. Add the Topic Name in the Service Bus Topic Name field

  8. Restart IIS - You will need to contact support or log an IIS Reset request at https://alemba.help/production/Portal.aspx

Impacts for CTI (Computer Telephony Integration)

  • If CTI Type is set to Telephone Host, the CTI is pushed via signalR to the client whenever the CTI url is called. The Default SignalR setting will work here, and you only need to scale per the options above.

  • If CTI Type is set to Push Notification, SignalR is not called