Mithir
Mithir

Reputation: 2423

Scaling out SignalR with SQL Server - is it possible to add messages from an outside service?

I am using SQL Server as a backplane for scaling out my SignalR. In my scenario there are some services which run on other servers and I need to integrate their working status into my SignalR hub.

I tried as a test running a simple Console application with the SQL server scaleout and publish a message like this:

        var config = new SqlScaleoutConfiguration(connectionString);
        GlobalHost.DependencyResolver.UseSqlServer(connectionString);

        var messageBus = new SqlMessageBus(GlobalHost.DependencyResolver, config);
        var message = new Message("TransactionHub", "RegisterClient","{userId:1}");
        messageBus.Publish(message);

Can I use the SQLScaleout like this somehow?

If not, is there some other way to do what I am trying to do?

Edit:

I've done as halter73 suggested and it works ok, you have to notice that if you activate a client side function, the parameter you send has to match, ie if the object is "Namespace.ClassName" then you should send an object of the same type exactly.

Upvotes: 2

Views: 391

Answers (1)

halter73
halter73

Reputation: 15234

You should try using GlobalHost.ConnectionManager.GetHubContext instead of publishing to the bus directly. Your code would look something like this:

var context = GlobalHost.ConnectionManager.GetHubContext<TransactionHub>();
context.Clients.All.registerClient(new { userId = 1 });

Upvotes: 2

Related Questions