Позвонить в концентратор SignalR от другого. Net Project - PullRequest
0 голосов
/ 03 августа 2020

У меня есть SignalR концентраторов в одном. NetCore проекте и SignalR клиентах в другом. NetCore проекте (в соответствии с рекомендациями по внутренней инфраструктуре). Я борюсь с тем, как реализовать клиентский код, который обеспечит соединение с концентраторами. Все мои проекты строятся нормально, мне просто не хватает подключения.

Клиентский проект:

public class MyClientController
    {
        private readonly IHubContext<MyHub, IMyHubClient> _hub;

        public MyClientController(IHubContext<MyHub, IMyHubClient> hub)
        {
            _hub = hub;
            // THIS NEVER GETS CALLED/HIT BECAUSE I DON'T KNOW HOW TO REGISTER IT
            _hub.Clients.All.BroadcastMessage("Notify", $"Hello everyone.  This has been constructed");
        }
}

Полагаю, мне нужно выполнить некоторую настройку в методе Startup.Configure()? Я уже установил клиентский пакет,

EDIT: я добавил следующий код, но он жалуется на формат (помните, это не относительный путь, он находится в другой службе).

app.UseEndpoints(endpoints =>
{
     endpoints.MapHub<MyHub>("http://localhost:60913/myHub");
}

Я на правильном пути здесь?

1 Ответ

1 голос
/ 03 августа 2020

Подключение выполняется путем сопоставления маршрута с классом вашего хаба. В документах есть хороший пример . Сюда входят:

// Add to services collection
services.AddSignalR();
// Map the route "/chathub" to a ChatHub class
app.UseRouting();
app.UseEndpoints(endpoints =>
{
    endpoints.MapHub<ChatHub>("/chathub");
});

Кстати, концентратор может быть отдельным классом, не связанным с контроллером.

...