Я пытаюсь использовать SignalR в .NetCore 3.1 WEBApi to pu sh уведомлений / сообщений для подключенных клиентов. Я несколько часов читал о topi c, но все же мне не хватает кусочков, чтобы заставить его работать. До сих пор в моем WebAPI у меня было:
Пустой класс-концентратор:
public class PLHub : Hub
{
}
класс Notify с внедрением IHubContext:
using Microsoft.AspNetCore.SignalR;
using System.Threading.Tasks;
namespace PadleloggAPI.Controllers
{
public class PLNotifier
{
private readonly IHubContext<PLHub> mPLHubContext;
public PLNotifier(IHubContext<PLHub> hubContext)
{
mPLHubContext = hubContext;
}
public async Task Notify(string user, string message)
{
await mPLHubContext.Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
}
В моем классе запуска I have:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapHub<PLHub>("/PLHub");
});
В моих ConfigureServices у меня есть:
services.AddSignalR();
services.AddSingleton<PLHub>();
Мне не хватает того, что написать в моем классе контроллера API для отправки уведомления:
// POST: api/Logg
[HttpPost]
public async Task<ActionResult<LoggInstans>> PostLoggInstans(LoggInstans loggInstans)
{
_context.PadleLogg.Add(loggInstans);
await _context.SaveChangesAsync();
// HERE I WANT TO SEND MY NOTIFICATION TO ALL CLIENTS BUT HOW???
return CreatedAtAction("GetLoggInstans", new { id = loggInstans.Id }, loggInstans);
}
Я не уверен, что полностью понял эту концепцию, поэтому в моем коде может быть что-то не так.