Today I had to make a connection between an old windows service and SignalR client. After tackling for an hour I decided to reference the Microsoft.AspNet.SignalR.Client library to my web service project and use it like below by overriding the OnStart method, actually I created the SignalR hub connection in the web service method:
protected override async void OnStart(string[] args)
{
var hubConnection = new HubConnection("http://www.MySignalRDomain.com/signalr", useDefaultUrl: false);
IHubProxy myProjectHub= hubConnection.CreateHubProxy("myProjectHub");
await hubConnection.Start();
await myProjectHub.Invoke("HiToYou", "an invoked message, for example");
}
And in the SignalR service, I created the target hub to get the string ("an invoked message, for example") from the web service in HiToYou method :
public class myProjectHub: Hub
{
public void HiToYou(string message)
{
Clients.All.addNewMessageToPage(message);
}
}
Needless to say, if you are using OwinStartup, you need to register SignalR middleware:
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(MyApplication.Startup))]
namespace MyApplication
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR("/signalr", new HubConfiguration());
}
}
}
Hope it would be useful!