Я создал концентратор в своем веб-API. Это очень просто:
public class DashboardHub : Hub
{
public async Task SendMessage(InfoSummary infoSummary)
{
await Clients.All.SendAsync("ReceiveMessage", infoSummary);
}
}
Я пытаюсь отправить сообщение на концентратор с контроллера в том же веб-API при обновлении данных.
Я видел 100 разных ответов, и ничего не работает. По сути, мой объект-концентратор в контроллере имеет значение null, и я не могу его создать.
private readonly IRepository _repo;
private readonly Helpers.Convert _convert;
private readonly CoreContext _context;
private readonly IMapper _mapper;
private readonly NotifyService _service;
private readonly DashboardHub _hub;
public MyController(IRepository repo,
CoreContext context,
IMapper mapper)
{
_convert = new Helpers.Convert(repo, mapper);
_repo = repo;
_context = context;
_mapper = mapper;
_hub = new DashboardHub();
_service = new NotifyService(_hub);
}
[HttpPost("updatestatus")]
public async Task<IActionResult> UpdateStatus(Header header) {
var returnVal = await _repo.ChangeStatus(header.HeaderId, header.Status);
headerSummary = _convert.ToReturnStatusHeader( await _repo.GetHeader(header.HeaderId));
// await _service.SendNotificationAsync(headerSummary);
await _hub.SendMessage(headerSummary);
return Ok(returnVal);
}
У меня есть
services.AddSignalR();
services.AddScoped(typeof(DashboardHub));
и
endpoints.MapHub<DashboardHub>("/Hubs/DashboardHub");
в соответствующих разделах файла startup.cs
Я знаю, что упускаю что-то очень маленькое, но мне хотелось бы знать, что это такое.
Я также пытался создать сильно напечатал концентратор, но это принесло еще больше проблем.
Заранее спасибо.