Search code examples
sql-serversignalrsignalr-backplane

Signalr scaleout with sql backplane


I have looked in to Introduction to Scaleout in SignalR and SignalR Scaleout with SQL Server documentations but there are some confusing things for me regarding how it actually works.

  1. How does backplane identifies all the connected servers to it? Is there a way of getting a list of connected servers from the backplane?
  2. If two servers have two different dns names (ex:- abc.com and 123.com) but connected to the same sql backplane does the messages are sent to those different dns servers as well? . If so if a client is connected to abc.com but the request sent to 123.com, will it be delivered to the client via abc.com?
  3. In documentation it says that all the servers save the messages in their local cache. Is there a way to know that a specific server received this message so we can log it some where?

Solution

    1. The Backplane in this case is a SQL Server, when a server connects to the backplane it is making a sql connection and SQL knows who is connected for example use the sp_who stored procedure.
    2. It depends on how you send your message. If the server is sending a message to all clients and its connected to a backplane, the message first goes into the backplane then each connected server picks up the message and delivers it to its clients. The same process happens for a group, but the server would only send the message out to the clients in the group.
    3. I couldnt find a way to intercept the message between when server gets the message off the backplane and delivering it to the client. So I dont think there is a way to log this. If you find a way let me know.