We had a similar situation with mobile devices. In our case, calling .Stop () or trying to delete an existing connection took 30 seconds, depending on how long the base connection was inactive. (the base protocol has a timeout that you can configure)
Our solution was to clear any processed events and dereference the hub connection object, and then simply start a new one with a new instance after the application resumes. It works reliably and almost instantly. The server shutdown event also fires correctly, although it fires for each individual instance that disconnects.
I documented our journey and solution in this post. Best practice for reconnecting the SignalR 2.0.NET client to the server node . Hope this will be helpful.
source share