У меня есть собственное приложение asp.net, работающее на консоли.Я могу отправить сообщение от моих клиентов c # windows form.Но я хочу отправить сообщение в любом месте моего класса сервера для клиентов.Не разовое сообщение.Поэтому мне нужен экземпляр hubcontext для его повторного использования.
Я использовал реализацию IHubContext, но я получаю исключение NullReference при использовании контекста концентратора.
Это мой концентратор.
public class UniveraHub : Microsoft.AspNetCore.SignalR.Hub
{
public string GetConnectionId()
{
return Context.ConnectionId;
}
public async Task SendMessage(string message)
{
await Clients.All.SendAsync("ReceiveMessage", message);
}
}
Это мой класс запуска
public class Startup
{
public void Configure(IApplicationBuilder app)
{
app.UseSignalR(routes =>
{
routes.MapHub<UniveraHub>("/UniveraHub");
});
}
public void ConfigureServices(IServiceCollection services)
{
services.AddSignalR();
services.AddScoped<MyHubHelper>();
}
}
Это мой класс HubHelper
public class MyHubHelper
{
private readonly IHubContext<UniveraHub> _hubContext;
public MyHubHelper(IHubContext<UniveraHub> hubContext)
{
_hubContext = hubContext;
}
public MyHubHelper()
{
}
public void SendOutAlert(string msg)
{
_hubContext.Clients.All.SendAsync("ReceivedMessage", msg);
}
}
Это program.cs, который использует мой вспомогательный класс для отправки сообщения клиентам
MyHubHelper helper = new MyHubHelper();
helper.SendOutAlert("Hi from server!");