I\'ve just updated some SignalR references and things have changed somewhat in order to allow for generically typed Hubs Hub
. In the existing examples and
Or take look at:
https://github.com/Gandalis/SignalR.Client.TypedHubProxy
It comes with more features than the TypeSafeClient mentioned above.
Take a look at:
https://github.com/i-e-b/SignalR-TypeSafeClient
May be useful!
In .NET Core Web App you can inject strongly typed signalR hub context like this
public interface IClient
{
Task ReceiveMessage(string message);
}
public class DevicesHub : Hub<IClient>
{
}
public class HomeController : ControllerBase
{
private readonly IHubContext<DevicesHub, IClient> _devicesHub;
public HomeController(IHubContext<DevicesHub, IClient> devicesHub)
{
_devicesHub = devicesHub;
}
[HttpGet]
public IEnumerable<string> Get()
{
_devicesHub.Clients
.All
.ReceiveMessage("Message from devices.");
return new string[] { "value1", "value2" };
}
}
There is now a new overload of GetHubContext that takes two generic parameters. The first is the Hub type like before, but the second generic parameter is TClient (which is the T in Hub<T>
).
Assuming that StockTickerHub is defined as follows:
public class TypedDemoHub : Hub<IClient>
Then
GlobalHost.ConnectionManager.GetHubContext<StockTickerHub>().Clients
becomes
GlobalHost.ConnectionManager.GetHubContext<StockTickerHub, IClient>().Clients
The type returned by the new overload to GetHubContext would be IHubContext<IClient>
and the Clients property would be IHubConnectionContext<IClient>
instead of IHubConnectionContext<dynamic>
or IHubConnectionContext<StockTickerHub>
.