Поскольку SignalR интегрирован в ASP.NET Core, это невозможно больше, чтобы использовать одно соединение для нескольких концентраторов:
В ASP.NET Core SignalR модель подключения была упрощена. Подключения выполняются напрямую к одному концентратору, а не к одному соединению, используемому для совместного доступа к нескольким концентраторам.
В качестве обходного пути для класса god вы можете использовать _ 1_ для структурирования вашего кода, если вы хотите использовать один концентратор.
Однако я действительно рекомендую использовать разные концентраторы для каждой цели. Например: если у меня есть система чата, я бы использовал специальный хаб (ChatHub
) для чата. Если бы у меня также была система викторин, я бы использовал QuizHub
и т. Д.
Я действительно не вижу проблемы с обработкой нескольких подключений. Потому что проблем с производительностью не будет. Разделяя код для каждой цели, вы реализуете разделение проблем (поправьте меня, если я ошибаюсь).
Если вы можете, инициализируйте клиентский код (соединение) только на тех страницах, где вы его фактически используете, разделив клиентский код SignalR (для каждого концентратора) в отдельный файл.
Возьмем мой последний пример: если у теста есть собственная страница, загружайте только клиентский код SignalR только на этой странице.
Еще одна вещь, которую вы можете попробовать, - это запросы AJAX. Иногда я разделяю свой код на разные контроллеры API и просто делаю запрос AJAX к своему контроллеру API, например, для обработки транзакций базы данных.
Вы также можете использовать некоторые функции SignalR внутри этого контроллера, используя _ 4_.
В ASP.NET Core SignalR вы можете получить доступ к экземпляру IHubContext через внедрение зависимостей. Вы можете внедрить экземпляр IHubContext в контроллер, промежуточное ПО или другую службу DI. Используйте экземпляр для отправки сообщений клиентам.
class SomeController : Controller
{
private readonly IHubContext<MyHub> _hubContext;
public SomeController(IHubContext<MyHub> hubContext)
{
_hubContext = hubContext;
}
}
Документация по с использованием функций SignalR вне хаба, есть еще примеры.
Обратной стороной является то, что вы не можете использовать все приятные функции SignalR, такие как добавление подключений к группам. Можно использовать в вашем контроллере.
person
Matthijs
schedule
20.12.2018