Использование SignalR Core в WebAPI для отправки sh сообщений клиентам. (используя. Net Core 3.1) - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь использовать 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);
        }

Я не уверен, что полностью понял эту концепцию, поэтому в моем коде может быть что-то не так.

...