5
votes

I have an application that uses SignalR to connect users on my site for things like chat. If I am only first opening my site to the public, I would assume I only need one instance for the first few months of usage (as long as demand doesn't require another instance). Can i just run my signalR hub class in the same instance without using Windows Azure Service Bus and then move it to the service bus once i use 2 or more instances?

Also one quick side question, on the Windows Azure Service Bus site it says:

The Service Bus enables up to 100 concurrent connections to an entity.

does this mean only 100 concurrent users connected to the service bus? or 100 concurrent connections to instances? I could see how only 100 concurrent users could be very limited in terms of large scale websites, so Im assuming it means instances? A little confused on how the architechture would work once you move to the service bus with concurrent connected users.

1
You can also consider Redis. Have a look: github.com/SignalR/SignalR/wiki/…tugberk

1 Answers

9
votes

Your users will be connected to your instances, and it will be your instances that connect to the Service Bus. I'm not saying 1 instance = 1 connection (I don't know how SignalR.WindowsAzureServiceBus works internally), but you won't reach the limits with a few instances running.

SignalR.WindowsAzureServiceBus will use the Service Bus as a ... service bus and distribute messages between instances to make sure you can use SignalR with multiple instances.

And you can indeed run the 'normal' SignalR in a single instance without Windows Azure Service Bus and change it to the SB implementation later (see this wiki for the steps: http://www.asp.net/signalr/overview/performance/scaleout-with-windows-azure-service-bus). But you should take into account that the Windows Azure SLA only applies if you have 2 instances or more running.