Как вызвать метод сервиса SignalR из сервиса веб-приложения
Допустим, у меня есть корпоративное приложение, работающее в службе веб-приложений Azure. Среди 100+ страниц у меня 3-5 страниц, которые нужно обслуживать в режиме реального времени. Чтобы воспользоваться возможностями службы Azure SignalR в режиме реального времени, я хочу, чтобы клиенты попадали в мое приложение SignalR (которое работает в службе RignalR). Но я не смог найти ни одной связанной статьи об этом. Как я могу вызвать метод Hub вне кода? Любой другой подход к решению моей проблемы более чем приветствуется. Моя главная задача - производительность страниц в реальном времени.
1 ответ
Если у вас есть сервер ASP.NET Core SignalR (т.е. у вас есть классы, производные от Hub
в приложении) вы не можете напрямую отправлять сообщения клиентам через службу Azure SignalR. Вы должны будете предоставить API в своем приложении ASP.NET Core, которое это делает.
Azure SignalR также поддерживает режим "без сервера", в котором у вас нет Hub
на сервере вообще. В этой модели клиенты подключаются напрямую к службе (вместо того, чтобы сначала подключаться к вашему приложению), а затем вы можете отправлять сообщения этим клиентам, используя REST API. Это относительно новый сценарий, поэтому документации не так много. Есть несколько сообщений в блоге и видео онлайн на эту тему, но не так много документации.
Если у вас уже есть приложение ASP.NET Core, я бы предложил сделать это, добавив REST API в ваше собственное приложение, которое позволяет другим службам в вашем приложении отправлять сообщения, вызывая этот API. В реализации этого API вы можете использовать IHubContext<T>
отправлять сообщения.